Java 增加包含值的字符串的简单方法,例如:USER1000
我有:Java 增加包含值的字符串的简单方法,例如:USER1000,java,Java,我有: String username = "USER1" String username = "USER10000" 我想增加值,如USER2或USER100001 是否有一种简单的方法来实现这一点,或者我应该循环使用字符串,检查每个字符是否为数字,然后构造新字符串 差不多 for(int i=username.length()-1; i>0; i--) { if( !Character.isDigit(username.charAt(i) ) ){ //cre
String username = "USER1"
String username = "USER10000"
我想增加值,如USER2
或USER100001
是否有一种简单的方法来实现这一点,或者我应该循环使用字符串
,检查每个字符是否为数字,然后构造新字符串
差不多
for(int i=username.length()-1; i>0; i--) {
if( !Character.isDigit(username.charAt(i) ) ){
//creating new string here
}
}
谢谢你比如:
String un = "USER10000";
int digit = Integer.parseInt( un.replaceAll( "\\D", "" ) );
String newUn = "USER" + ( digit + 1 );
如果更合适,您可以使用long
更新:
“\\D”
也可以重写为“[^\\D]”
,因为它们与相同的字符相匹配
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);
}
你不想说“[^\\d]”“?我喜欢stackoverflow:)谢谢。你能用
“[^\\d]”更新你的答案吗?
我将以一种积极的方式使用Long
:)与“USER9”
一起失败,因为incremented
没有设置为true,也没有将n位数字变成n+1位数字,例如9->10@A4L-正确!这是OP没有涵盖的边缘案例,所以我将其作为例外。但这可以处理前导零,与其他解决方案不同。我认为他这样做了,因为他给出了第一个示例“USER1
”应该增加到“USER2”
,并且从该值继续“USER9”
,会在某个时候出现,只是说。。。