Как удалить нечисловые символы из строки в Java? - PullRequest
56 голосов
/ 07 октября 2009

У меня длинная строка. Что такое регулярное выражение для разбиения чисел на массив?

Ответы [ 10 ]

138 голосов
/ 07 октября 2009

Вы удаляете или разбиваете? Это удалит все нечисловые символы.

myStr = myStr.replaceAll( "[^\\d]", "" )
22 голосов
/ 20 января 2015

Еще один подход для удаления всех нечисловых символов из строки:

String newString = oldString.replaceAll("[^0-9]", "");
16 голосов
/ 07 октября 2009
String str= "somestring";
String[] values = str.split("\\D+"); 
7 голосов
/ 10 января 2017

Другое решение для регулярных выражений:

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

Точно так же вы можете

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

В RegEX символ '\' сделает букву, следующую за ним, шаблоном: \ w - буквенно-цифровой и \ W - Не-буквенно-цифровой , отрицает, когда вы пишете с большой буквы букву.

7 голосов
/ 07 октября 2009

Вы захотите использовать метод класса String ' Split () и передать регулярное выражение "\ D +", которое будет соответствовать как минимум одному нечисловому числу.

myString.split("\\D+");
2 голосов
/ 10 февраля 2017

Потоки коллекции Java 8 :

StringBuilder sb = new StringBuilder();
test.chars().mapToObj(i -> (char) i).filter(Character::isDigit).forEach(sb::append);
System.out.println(sb.toString());
0 голосов
/ 29 января 2019

Предыдущие ответы лишат вас десятичной точки. Если вы хотите сохранить ваши десятичные значения l, вы можете

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 голосов
/ 25 мая 2016

Простой способ без использования регулярных выражений:

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 голосов
/ 28 сентября 2015

вы можете использовать рекурсивный метод, как показано ниже:

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 голосов
/ 31 марта 2015

Это работает в Flex SDK 4.14.0

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...