【问题标题】:How to increment a string from right no left如何从右不左递增字符串
【发布时间】:2019-04-28 15:14:49
【问题描述】:

我有以下字符串:

String numbersOfIds = "00000";

如何递增以下序列中的最后一个索引 000001、000002、000003、000004。

【问题讨论】:

  • 您为什么使用String 而不是int/long?你可以有一个计数器变量,然后将其转换为String,但这似乎有点多余,除非你有理由让它成为String
  • 如果它像Integer 一样嘎嘎叫,如果它像Integer 一样走路,则将其转换为Integer
  • 没有具体原因使用字符串,只要数字从右到左开始加,例如000001

标签: java numbers auto-increment


【解决方案1】:

如果最后一个字符小于'9',则递增并停止,否则设置为'0',向左移动一位,重复指令。

像这样:

public static String increment(String input) {
    char[] buf = input.toCharArray();
    for (int i = buf.length - 1; i >= 0; i--) {
        if (buf[i] >= '0' && buf[i] <= '8') {
            buf[i]++;
            return new String(buf);
        } else if (buf[i] != '9') {
            throw new IllegalArgumentException(input);
        }
        buf[i] = '0';
    }
    // Overflow, increase buffer size and prefix value with '1'
    char[] buf2 = new char[buf.length + 1];
    buf2[0] = '1';
    System.arraycopy(buf, 0, buf2, 1, buf.length);
    return new String(buf2);
}

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2018-02-03
    • 2019-08-04
    相关资源
    最近更新 更多