У меня есть строка типа "portal100common2055".
"portal100common2055"
Я хотел бы разбить ее на две части, где вторая часть должна содержать только цифры.
"portal200511sbet104" станет "portal200511sbet", "104"
"portal200511sbet104"
"portal200511sbet"
"104"
Не могли бы вы помочь мне достичь этого?
Как это:
Matcher m = Pattern.compile("^(.*?)(\\d+)$").matcher(args[0]); if( m.find() ) { String prefix = m.group(1); String digits = m.group(2); System.out.println("Prefix is \""+prefix+"\""); System.out.println("Trailing digits are \""+digits+"\""); } else { System.out.println("Does not match"); }
String[] parts = input.split("(?<=\\D)(?=\\d+$)"); if (parts.length < 2) throw new IllegalArgumentException("Input does not end with numbers: " + input); String head = parts[0]; String numericTail = parts[1];
Это более элегантное решение использует взгляд позади и взгляд вперед функции регулярного выражения.
Пояснение:
(?<=\\D)
\D
(?=\\d+$)
\d
Это будет только истинное значение в желаемой точке, которую вы хотите разделить на вход