StringBuilder 没有按预期工作

StringBuilder not working as expected

我遇到了 StringBuilder 的问题,无论我做什么都无法解决...

这是我的代码:

while (rs.next()) {
    tables[i][0] = rs.getString(3);
    tables[i][1] = tables[i][0].substring(0,1).toUpperCase() + tables[i][0].substring(1);
    StringBuilder strb = new StringBuilder(tables[i][1]);
    tables[i][1] = strb.insert(5, ' ').toString();
    tables[i][1] = strb.insert(6, Character.toUpperCase(tables[i][1].charAt(6))).toString();
    tables[i][1] = strb.deleteCharAt(7).toString();
    tables[i][1] = strb.insert(tables[i][1].length() - 4, ' ').toString();

    for (int r = 0; r == tables[i][1].length() - 5; r++) {
        if (Character.isDigit(tables[i][1].charAt(r)) == true) {
            tables[i][1] = strb.insert(r, ' ').toString();
            if (Character.isDigit(tables[i][1].charAt(r + 1)) == false) {
                tables[i][1] = strb.insert(r + 1, ' ').toString();
            }
        }
    }

    System.out.println(tables[i][1]);
    i++;
}
System.out.println(i);

这个 while 结构从 ResultSet 接收一个 String,比如“feiratest2abril2009”,它是我数据库中 table 的名称。一切正常,直到第 8 行。当程序到达 for 循环以便在找到的第一个数字之前和找到的最后一个数字之后插入一个空的 space 时,它没有这样做。

程序将 tables[i][1] 打印为“Feira Test2abril 2009”,我希望它打印“Feira Test 2 abril 2009”...

有人知道为什么会这样吗?我的代码有什么问题吗?

更改循环条件:

for (int r = 0; r < tables[i][1].length() - 5; r++) {

并且,当您找到一个数字时,在插入空格后您还需要递增 r 以跳过这些空格:

r += 2;