Я предложу вам написать собственную логику, чтобы сделать это. Использование шаблонов и совпадений из Java - хорошая практика, но это стандартные решения, которые могут не всегда подходить для эффективного решения. Подобно тому, как cletus предоставил очень аккуратное решение, но в этой логике происходит то, что алгоритм подстроки выполняется в фоновом режиме для отслеживания цифр. Тебе не нужен поиск паттернов здесь, я полагаю. Вам просто нужно извлечь цифры из строки (например, 123 из "a1b2c3"). Посмотрите на следующий код, который делает это чистым образом в O (n) и не выполняет ненужных дополнительных операций, как классы Pattern и Matcher для вас ( просто скопируйте, вставьте и запустите :)):
открытый класс DigitExtractor {
/**
* @param args
*/
public static void main(String[] args) {
String sample = "sdhj12jhj345jhh6mk7mkl8mlkmlk9knkn0";
String digits = getDigits(sample);
System.out.println(digits);
}
private static String getDigits(String sample) {
StringBuilder out = new StringBuilder(10);
int stringLength = sample.length();
for(int i = 0; i <stringLength ; i++)
{
char currentChar = sample.charAt(i);
int charDiff = currentChar -'0';
boolean isDigit = ((9-charDiff)>=0&& (9-charDiff <=9));
if(isDigit)
out.append(currentChar);
}
return out.toString();
}
}