这是一个更详细的解决方案。不太优雅,但可能更快: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
final char c = input.charAt(i);
if(c > 47 && c
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
顺便说一句:我没有使用Character.isDigit(ch),因为它接受除0 - 9之外的许多其他字符。