我有一个Java字符串对象。我只需要从中提取数字。我举个例子:

123456-789我要123456789

是否存在只提取数字的库函数?

谢谢你的回答。在我尝试这些之前,我需要知道我是否必须安装任何额外的llibraries?


当前回答

你可以使用str.replaceAll("[^0-9]", "");

其他回答

使用谷歌番石榴:

CharMatcher.inRange('0','9').retainFrom("123-456-789")

更新:

使用Precomputed CharMatcher可以进一步提高性能

CharMatcher ASCII_DIGITS=CharMatcher.inRange('0','9').precomputed();  
ASCII_DIGITS.retainFrom("123-456-789");
input.replaceAll("[^0-9?!\\.]","")

这将忽略小数点。

例如:如果你有一个445.3公斤的输入,输出将是445.3公斤。

您可以使用正则表达式和删除非数字。

str = str.replaceAll("\\D+","");

你可以使用str.replaceAll("[^0-9]", "");

public String extractDigits(String src) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < src.length(); i++) {
        char c = src.charAt(i);
        if (Character.isDigit(c)) {
            builder.append(c);
        }
    }
    return builder.toString();
}