我有:
String username = "USER1"
String username = "USER10000"
我想增加像USER2
或USER100001
有没有一种简单的方法可以做到这一点,还是应该循环通过String
并检查每个字符是否为数字并构造我的新字符串。
像
这样的东西for(int i=username.length()-1; i>0; i--) {
if( !Character.isDigit(username.charAt(i) ) ){
//creating new string here
}
}
谢谢
答案 0 :(得分:7)
类似的东西:
String un = "USER10000";
int digit = Integer.parseInt( un.replaceAll( "\\D", "" ) );
String newUn = "USER" + ( digit + 1 );
如果更合适,您可以使用long
。
更新:
"\\D"
也可以重写为"[^\\d]"
,因为它们匹配相同的字符
答案 1 :(得分:1)
你可以做旧学校:
String increment(String s) {
char[] a = s.toCharArray();
boolean incremented = false;
for (int i = a.length - 1; i >= 0 && !incremented; i--) {
if (Character.isDigit(a[i])) {
if (a[i] == '9') {
a[i] = '0';
} else {
a[i] = (char) (a[i] + 1);
incremented = true;
}
}
}
if (!incremented) {
throw new IllegalArgumentException("Failed to increment " + s);
}
return new String(a);
}