qstring 删除指定字符_汇总,删除String中的指定字符的11种方法

  • Post author:
  • Post category:其他


5ecd33a88e1638b773145f0830c897de.png

方法一

第一种方法 – 通过循环从前往后遍历,如果不是要删除的字符则加到处理后的字符串中,代码如下:

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 = "";