我创建了此方法deleteCharAt,以便通过其索引从字符串中删除字符:
public String deleteCharAt(String str, int i) {
if (i == 0) {
return str.substring(1);
}
else if (i == str.length()) {
return str.substring(0, i-1);
}
String first = str.substring(0, i - 1);
String second = str.substring(i+1);
return first + second;
}
但是它没有按预期工作,我认为可能是因为我不了解子字符串函数的工作原理。
这看起来正确吗?此代码将成功从字符串中删除第i个字符吗?还是弄乱了子字符串功能?
最佳答案
这不太正确-这是:
String first = str.substring(0, i - 1);
应该:
String first = str.substring(0, i);
(考虑一个简单的示例-如果
i
为1,则要使用substring(0, 1)
来获取第一个字符; substring(0, 0)
将给出一个空字符串。)因为
substring
的第二个参数已经是排他的。同样,此优化:
else if (i == str.length()) {
return str.substring(0, i);
}
应该:
else if (i == str.length() - 1) {
return str.substring(0, i);
}
您还应该添加参数验证。
进行这些更改之后,此代码:
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(deleteCharAt("0123456789", i));
}
}
给出以下输出:
123456789
023456789
013456789
012456789
012356789
012346789
012345789
012345689
012345679
012345678
关于java - Java deleteCharAt函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9742163/