Java deleteCharAt函数
我创建此方法deleteCharAt是为了通过索引从字符串中删除字符:Java deleteCharAt函数,java,string,Java,String,我创建此方法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.substr
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个字符吗?还是我弄乱了子字符串函数?它不太正确-这是:
public static String deleteCharAt(String s, int pos) {
StringBuffer buf = new StringBuffer( s.length() - 1 );
buf.append( s.substring(0,pos) ).append( s.substring(pos+1) );
return buf.toString();
}
String first = str.substring(0, i - 1);
应该是:
String first = str.substring(0, i);
else if (i == str.length() - 1) {
return str.substring(0, i);
}
(考虑一个简单的例子-如果i
为1,您希望获取子字符串(0,1)
以获取第一个字符;子字符串(0,0)
将给出一个空字符串。)
因为子字符串
的第二个参数已经是独占的
同样,此优化:
else if (i == str.length()) {
return str.substring(0, i);
}
应该是:
String first = 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));
}
}
这不太正确-这是:
String first = str.substring(0, i - 1);
应该是:
String first = str.substring(0, i);
else if (i == str.length() - 1) {
return str.substring(0, i);
}
(考虑一个简单的例子-如果i
为1,您希望获取子字符串(0,1)
以获取第一个字符;子字符串(0,0)
将给出一个空字符串。)
因为子字符串
的第二个参数已经是独占的
同样,此优化:
else if (i == str.length()) {
return str.substring(0, i);
}
应该是:
String first = 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));
}
}
此代码是否会成功删除字符串中的第i个字符?
嗯。。。试一试怎么样?我试过了,但它似乎删除了正确的一个,但也删除了正确的一个之前的一个。你这样做的方式很好,但是StringBuffer已经有了一种方法,可以完全实现你要做的事情,如果你要做的事情已经存在,那么就不要这样做“重新发明轮子。“此代码是否会成功删除字符串中的第i个字符?
嗯。。。试一试怎么样?我试过了,但它似乎删除了正确的一个,但也删除了正确的一个之前的一个。你这样做的方式很好,但是StringBuffer已经有了一种方法,可以完全实现你要做的事情,如果你要做的事情已经存在,那么就不要这样做“重新发明轮子。”