我试图通过插入"来创建新字符串 - "在字符串中的连续数字之间,例如,如果输入字符串是" bea345ful"输出字符串应该像" bea3-4-5ful"但如果输入字符串是" be3u4t5ful"我不需要插入" - "因为没有数字是连续的。
我能够使用以下代码,但是当字符串末尾有连续的数字时,它会失败,例如" be3u4t5f67"在这种情况下,它会抛出StringIndexOutOfBoundsException,我理解这种情况正在发生,因为我的代码没有处理这个条件。有任何建议如何修复它?
public static String insertDash(String str){
String result = "";
for (int i = 0; i < str.length(); i ++) {
if (Character.isDigit(str.charAt(i)) && Character.isDigit(str.charAt(i + 1))) {
result+=str.charAt(i) + "-";
} else {
result+=str.charAt(i);
}
} return result;
答案 0 :(得分:3)
循环的停止条件应为i < str.length() - 1
。
如果没有更改,在最后一次迭代中,i
等于str.length() - 1
,因此访问索引str.length() - 1 + 1
(带str.charAt(i + 1)
)的元素会触发异常。< / p>
在for循环之后,只需将最后一个字符附加到result
即可。