StringBuilder无法按预期工作

时间:2015-10-22 16:09:55

标签: java mysql stringbuilder

我遇到了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);

此结构会从String {" ResultSet" feiratest2abril2009收到tables[i][1]。这是我数据库中表的名称。一切正常,直到排第8行。当程序到达for循环时,为了在找到的第一个数字之前和最后一个数字之后插入一个空格,它就不能这样做。

该程序将Feira Test2abril 2009打印为" Feira Test 2 abril 2009"我希望它打印出#34; add(header, BorderLayout.PAGE_START); add(gridPanel, BorderLayout.CENTER); add(footer, BorderLayout.PAGE_END); " ...

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

1 个答案:

答案 0 :(得分:2)

更改循环条件:

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

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

r += 2;