如何从java中的字符串中删除非数字字符?

时间:2009-10-07 19:26:11

标签: java regex

我有一个很长的字符串。将数字拆分成数组的正则表达式是什么?

10 个答案:

答案 0 :(得分:138)

你要拆除还是拆分?这将删除所有非数字字符。

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

答案 1 :(得分:22)

从字符串中删除所有非数字字符的另一种方法:

String newString = oldString.replaceAll("[^0-9]", "");

答案 2 :(得分:16)

String str= "somestring";
String[] values = str.split("\\D+"); 

答案 3 :(得分:7)

您将需要使用String类'Split()方法并传入一个“\ D +”的正则表达式,该表达式将匹配至少一个非数字。

myString.split("\\D+");

答案 4 :(得分:7)

另一种正则表达式解决方案:

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

同样,你可以

s.split.map { |word| ('A'..'Z').include?(word[0]) ? word : '-' * word.length }.join(' ')

在RegEX中,符号'\'会使其后面的字母成为模板: \ w - 字母数字 \ W - 非AlphaNumeric ,在大写字母时否定。

答案 5 :(得分:2)

Java 8 collection streams

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

答案 6 :(得分:0)

这适用于Flex SDK 4.14.0

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

答案 7 :(得分:0)

你可以使用如下的递归方法:

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);
        }
    } 

答案 8 :(得分:0)

不使用正则表达式的简单方法:

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();
}

答案 9 :(得分:0)

先前的答案将删除您的小数点。如果您想保存Decima 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 )