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

123456-789我要123456789

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

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


当前回答

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

其他回答

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

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

使用谷歌番石榴:

CharMatcher.DIGIT.retainFrom("123-456-789");

CharMatcher是可插拔的,使用起来非常有趣,例如,你可以做以下事情:

String input = "My phone number is 123-456-789!";
String output = CharMatcher.is('-').or(CharMatcher.DIGIT).retainFrom(input);

输出== 123-456-789

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

我已经确定了电话号码+9(987)124124的代码。

Unicode字符占用4个字节。

public static String stripNonDigitsV2( CharSequence input ) {
    if (input == null)
        return null;
    if ( input.length() == 0 )
        return "";

    char[] result = new char[input.length()];
    int cursor = 0;
    CharBuffer buffer = CharBuffer.wrap( input );
    int i=0;
    while ( i< buffer.length()  ) { //buffer.hasRemaining()
        char chr = buffer.get(i);
        if (chr=='u'){
            i=i+5;
            chr=buffer.get(i);
        }

        if ( chr > 39 && chr < 58 )
            result[cursor++] = chr;
        i=i+1;
    }

    return new String( result, 0, cursor );
}
public class FindDigitFromString 
{

    public static void main(String[] args) 
    {
        String s="  Hi How Are You 11  ";        
        String s1=s.replaceAll("[^0-9]+", "");
        //*replacing all the value of string except digit by using "[^0-9]+" regex.*
       System.out.println(s1);          
   }
}

输出:11