我遇到了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);
" ...
有没有人知道为什么会这样?我的代码有什么问题吗?
答案 0 :(得分:2)
更改循环条件:
for (int r = 0; r < tables[i][1].length() - 5; r++) {
并且,当您找到一个数字时,在插入空格后,您还需要增加r
以跳过这些空格:
r += 2;