Ben kod Sean Patrick Floyd esinlenerek ve biraz olsun maksimum performans için yeniden yazmak.
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 );
while ( buffer.hasRemaining() ) {
char chr = buffer.get();
if ( chr > 47 && chr < 58 )
result[cursor++] = chr;
}
return new String( result, 0, cursor );
}
Minimum sayıda çok uzun String performans testi yapmak ve sonuç:
- Orijinal kod% 25,5 daha yavaş
- Guava yaklaşımı 2,5-3 kat daha yavaş
- D + ile düzenli ifade 3-3,5 kat daha yavaştır
- Sadece D ile düzenli ifade 25+ kat daha yavaştır
Btw bu dizginin uzunluğuna bağlıdır. Sadece 6 sayı içeren dize ile guava% 50 daha yavaş ve regexp 1 kat daha yavaş