web-dev-qa-db-fra.com

Comment puis-je supprimer le caractère non numérique d'une chaîne en Java?

J'ai une longue ficelle. Quelle est l'expression régulière pour diviser les nombres dans le tableau?

56
unj2

Est-ce que vous enlevez ou divisez? Cela supprimera tous les caractères non numériques.

myStr = myStr.replaceAll( "[^\\d]", "" )
138
Stefan Kendall

Une autre approche pour supprimer tous les caractères non numériques d'une chaîne:

String newString = oldString.replaceAll("[^0-9]", "");
22
Andrey
String str= "somestring";
String[] values = str.split("\\D+"); 
16
eveliotc

Une autre solution regex:

string.replace(/\D/g,'');  //remove the non-Numeric

De même, vous pouvez

string.replace(/\W/g,'');  //remove the non-alphaNumeric

Dans RegEX, le symbole '\' ferait de la lettre qui la suit un modèle:\w - alphanumeric, et\W - non alpha-numérique majuscule la lettre.

7
krizajb

Vous voudrez utiliser la méthode String ' Split () et lui transmettre une expression régulière "\ D +" qui correspondra à au moins un autre nombre.

myString.split("\\D+");
7
Stephen Mesa

Flux de collecte Java 8 :

StringBuilder sb = new StringBuilder();
test.chars().mapToObj(i -> (char) i).filter(Character::isDigit).forEach(sb::append);
System.out.println(sb.toString());
2
Matthias Gerth

Cela fonctionne dans Flex SDK 4.14.0

myString.replace (/ [^ 0-9 && ^.]/g, "");

0
Matthias Gerth

vous pouvez utiliser une méthode récursive comme ci-dessous: 

public static String getAllNumbersFromString(String input) {
        if (input == null || input.length() == 0) {
            return "";
        }
        char c = input.charAt(input.length() - 1);
        String newinput = input.substring(0, input.length() - 1);

            if (c >= '0' && c<= '9') {
            return getAllNumbersFromString(newinput) + c;

        } else {
            return getAllNumbersFromString(newinput);
        }
    } 
0
Suleiman Alrosan

Les réponses précédentes effaceront votre point décimal. Si vous voulez sauvegardez votre décima l, vous voudrez peut-être 

String str = "My values are : 900.00, 700.00, 650.50";

String[] values = str.split("[^\\d.?\\d]"); 
//    split on wherever they are not digits ( but don't split digits embedded with decimal point ) 
0
Jenna Leaf

Manière simple sans utiliser Regex:

public static String getOnlyNumerics(String str) {
    if (str == null) {
        return null;
    }
    StringBuffer strBuff = new StringBuffer();
    char c;
    for (int i = 0; i < str.length() ; i++) {
        c = str.charAt(i);
        if (Character.isDigit(c)) {
            strBuff.append(c);
        }
    }
    return strBuff.toString();
}
0
shridutt kothari