方法一
第一种方法 – 通过循环从前往后遍历,如果不是要删除的字符则加到处理后的字符串中,代码如下:
public String deleteCharString0(String sourceString, char chElemData) {
String resultString = "";
for (int i = 0; i < sourceString.length(); i++) {
if (sourceString.charAt(i) != chElemData) {
resultString += sourceString.charAt(i);
}
}
return resultString;
}
金手指小结:sourceString.charAt(i) 遍历查找,resultString做 += 拼接操作,一共拼接sourceString.length-1次,sourceString.charAt()来拼接。
优点:只是使用 string.charAt() 遍历;
缺点:对string做 += 拼接操作,因为string是final修饰的不可变对象,所以要做n次字符串拼接,效率很低。
方法二
第二种方法 — 通过循环确定要删除字符的位置索引,然后通过分割字符串的形式,将子字符串拼接,注意最后一段子字符串和源字符串中没有要删除字符的情况,代码如下:
public String deleteCharString1(String sourceString, char chElemData) {
String resultString = "";
int iIndex = 0;
for (int i = 0; i < sourceString.length(); i++) {
if (sourceString.charAt(i) == chElemData) {
if (i > 0) {
resultString += sourceString.substring(iIndex, i); // string类型 += ,这是字符串拼接操作
}
iIndex = i + 1;
}
}
if (iIndex <= sourceString.length()) {
resultString += sourceString.substring(iIndex, sourceString.length());
}
return resultString;
}
金手指小结:sourceString.charAt(i) 遍历查找,resultString做 += 拼接操作,拼接次数较方法1少,sourceString.substring来拼接。
方法三
第三种方法 — 原理同上,只不过查找要删除字符位置采用String类中的函数执行,效率不如上面的高,代码如下:
public String deleteCharString2(String sourceString, char chElemData) {
String resultString = "";