1

我想获取给定字符串的数字,我使用了如下代码

String sample = "7011WD";
    String output = "";
    for (int index = 0; index < sample.length(); index++)
    {
        if (Character.isDigit(sample.charAt(index)))
        {
            char aChar = sample.charAt(index);
            output = output + aChar;
        }
    }

    System.out.println("output :" + output);

结果是: 输出:7011

有没有简单的方法来获得输出?

4

2 回答 2

6

有没有简单的方法来获取输出

可能您可以使用正则表达式\\D+D不是数字的任何东西,+表示一次或多次出现),然后使用String#replaceAll()带有空字符串的所有非数字:

String sample = "7011WD";
String output = sample.replaceAll("\\D+","");

虽然请记住,使用正则表达式一点也不高效。此外,这个正则表达式也会删除小数点!

您需要分别使用Integer#parseInt(output)Long#parseLong(output)来获取原语intlong


你也可以使用谷歌的 Guava CharMatcher使用inRange()指定范围,并将该范围中的字符按顺序返回为Stringusing retainFrom()

于 2013-07-25T04:27:14.710 回答
1

您也可以使用 ASCII 来执行此操作

String sample = "7011WD";
String output = "";
for (int index = 0; index < sample.length(); index++)
{

        char aChar = sample.charAt(index);
        if(int(aChar)>=48 && int(aChar)<= 57)
        output = output + aChar;
    }
}

System.out.println("output :" + output);
于 2013-07-25T05:01:50.653 回答