我想在字符串中的每个数字和非数字之间以及每个非数字之间添加一个空格。
例如: “133+23d-=”➟“133+23d-=”
这是我的尝试:
for(int i=0; i<input.length();i++){
if((Character.isDigit(input.charAt(i)) && !Character.isDigit(input.charAt(i+1))) || (!Character.isDigit(input.charAt(i)) && Character.isDigit(input.charAt(i+1))) || (!Character.isDigit(input.charAt(i)) && !Character.isDigit(input.charAt(i+1)))){
input = input.substring(0, i) + " " + input.substring(i, input.length());
}
}
(其中“input”是我想要执行此操作的字符串)
目前,由于某种原因,循环只是无限循环?
最佳答案
您正在循环中重新分配input
并扩展其长度,同时还使用长度作为终止条件。因此,您还将考虑新添加的空白,这将触发插入另一个空白,等等。
您应该将结果存储在单独的变量中(出于性能原因,最好是 StringBuilder
),而不是直接修改输入
。
此外,由于您的 i
从 0
运行到 length-1
,因此在尝试访问 时您将收到 IndexOutOfBoundsException charAt(i+1)
在该循环的最后一次迭代中。
关于java - 如何在每个 int 和非 int 值之间添加空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679243/