增加包含值的String的简单方法,例如:USER1000

时间:2014-03-04 10:45:09

标签: java

我有:

String username = "USER1"
String username = "USER10000"

我想增加像USER2USER100001

这样的值

有没有一种简单的方法可以做到这一点,还是应该循环通过String并检查每个字符是否为数字并构造我的新字符串。

这样的东西
for(int i=username.length()-1; i>0; i--) {
   if( !Character.isDigit(username.charAt(i) ) ){

        //creating new string here
   }

}

谢谢

2 个答案:

答案 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);
}