我有一个像"portal100common2055"
这样的字符串。
我想把它分成两部分,第二部分应该只包含数字。
"portal200511sbet104"
将变为"portal200511sbet"
,"104"
你能帮助我实现这个目标吗?
答案 0 :(得分:5)
像这样:
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");
}
答案 1 :(得分:3)
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
)这只会在想要分割输入
的所需点处为真