Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增加包含值的字符串的简单方法,例如:USER1000_Java - Fatal编程技术网

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”
,会在某个时候出现,只是说。。。