从 Java 中的字符串中提取数字

2022-08-31 05:51:12

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

"123-456-789"我想要"123456789"

是否有仅提取数字的库函数?

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


答案 1

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

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

答案 2

这是一个更详细的解决方案。不那么优雅,但可能更快:

public static String stripNonDigits(
            final CharSequence input /* inspired by seh's comment */){
    final StringBuilder sb = new StringBuilder(
            input.length() /* also inspired by seh's comment */);
    for(int i = 0; i < input.length(); i++){
        final char c = input.charAt(i);
        if(c > 47 && c < 58){
            sb.append(c);
        }
    }
    return sb.toString();
}

测试代码:

public static void main(final String[] args){
    final String input = "0-123-abc-456-xyz-789";
    final String result = stripNonDigits(input);
    System.out.println(result);
}

输出:

0123456789

顺便说一句:我没有使用Charact.isDigit(ch),因为它接受除0 - 9之外的许多其他字符。