最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA之String中刪除指定字符方式(11種方法)

 更新時間:2023年02月27日 09:24:45   作者:CoderPLDQ  
這篇文章主要介紹了JAVA之String中刪除指定字符方式(11種方法),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

第一種方法

通過循環(huán)從前往后遍歷,如果不是要刪除的字符則加到處理后的字符串中

代碼如下:

    public String deleteCharString0(String sourceString, char chElemData) {
        String deleteString = "";
        for (int i = 0; i < sourceString.length(); i++) {
            if (sourceString.charAt(i) != chElemData) {
                deleteString += sourceString.charAt(i);
            }
        }
        return deleteString;
    }

第二種方法

通過循環(huán)確定要刪除字符的位置索引,然后通過分割字符串的形式,將子字符串拼接,注意最后一段子字符串和源字符串中沒有要刪除字符的情況

代碼如下:

    public String deleteCharString1(String sourceString, char chElemData) {
        String deleteString = "";
        int iIndex = 0;
        for (int i = 0; i < sourceString.length(); i++) {
            if (sourceString.charAt(i) == chElemData) {
                if (i > 0) {
                    deleteString += sourceString.substring(iIndex, i);
                }
                iIndex = i + 1;
            }
        }
        if (iIndex <= sourceString.length()) {
            deleteString += sourceString.substring(iIndex, sourceString.length());
        }
        return deleteString;
    }

第三種方法

原理同上,只不過查找要刪除字符位置采用String類中的函數(shù)執(zhí)行,效率不如上面的高

代碼如下:

    public String deleteCharString2(String sourceString, char chElemData) {
        String deleteString = "";
        int iIndex = 0;
        int tmpCount = 0;
        do {
            tmpCount = sourceString.indexOf(chElemData, iIndex);
            if (tmpCount > 0) {
                deleteString += sourceString.substring(iIndex, tmpCount);
            }
            if (tmpCount != -1) {
                iIndex = tmpCount + 1;
            }
        } while (tmpCount != -1);
        if (iIndex <= sourceString.length()) {
            deleteString += sourceString.substring(iIndex, sourceString.length());
        }
        return deleteString;
    }

第四種方法

原理與上方基本一致,只不過這次采用倒序方式,這里的坑就更多了,一定要注意索引的取值范圍和是否合法

代碼如下:

    public String deleteCharString3(String sourceString, char chElemData) {
        String deleteString = "";
        int iIndex = sourceString.length();
        int tmpCount = 0;
        do {
            tmpCount = sourceString.lastIndexOf(chElemData, iIndex - 1);
            if (tmpCount < sourceString.length() && tmpCount >= 0) {
                deleteString = sourceString.substring(tmpCount + 1, iIndex) + deleteString;
            }
            if (tmpCount != -1) {
                iIndex = tmpCount;
            }
        } while (tmpCount != -1);
        if (iIndex >= 0) {
            deleteString = sourceString.substring(0, iIndex) + deleteString;
        }
 
        return deleteString;
    }

第五種方法

通過采用正則的方式和replaceAll函數(shù),本種方法要注意特殊字符,例如正則中的 “.”字符,需要對特殊字符進行轉(zhuǎn)義

代碼如下:

    public String deleteCharString4(String sourceString, char chElemData) {
        String deleteString = "";
        final String strTable = "|^$*+?.(){}\\";
        String tmpRegex = "["; 
        for (int i = 0; i < strTable.length(); i++) {
            if (strTable.charAt(i) == chElemData) {
                tmpRegex += "\\";
                break;
            }
        }
        tmpRegex += chElemData + "]";
        deleteString = sourceString.replaceAll(tmpRegex, "");
        return deleteString;
    }

第六種方法

采用正則的方式將字符串分割成幾個子字符串,再將子字符串進行拼接

代碼如下:

    public String deleteCharString5(String sourceString, char chElemData) {
        String deleteString = "";
        final String strTable = "|^$*+?.(){}\\";
        String tmpRegex = "["; 
        for (int i = 0; i < strTable.length(); i++) {
            if (strTable.charAt(i) == chElemData) {
                tmpRegex += "\\";
                break;
            }
        }
        tmpRegex += chElemData + "]";
        String[] tmpStringArray = sourceString.split(tmpRegex);
        for (int i = 0; i < tmpStringArray.length; i++) {
            deleteString += tmpStringArray[i];
        }
        return deleteString;
    }

第七種方法

將字符編程可讀序列,在通過 String 類中的方法替換

代碼如下:

    public String deleteCharString6(String sourceString, char chElemData) {
        String tmpString = "";
        tmpString += chElemData;
        tmpString.subSequence(0, 0);
        String deleteString = "";
        deleteString = sourceString.replace(tmpString, deleteString.subSequence(0, 0));
        return deleteString;
    }

第八種方法

把原字符串轉(zhuǎn)化為字符數(shù)組,然后原理與直接插入排序原理類似

代碼如下:

    public String deleteCharString7(String sourceString, char chElemData) {
        String deleteString = "";
        char[] Bytes = sourceString.toCharArray();
        int iSize = Bytes.length;
        for (int i = Bytes.length - 1; i >= 0; i--) {
            if (Bytes[i] == chElemData) {
                for (int j = i; j < iSize - 1; j++) {
                    Bytes[j] = Bytes[j + 1];
                }
                iSize--;
            }
        }
        for (int i = 0; i < iSize; i++) {
            deleteString += Bytes[i];
        }
        return deleteString;
    }

第九種方法

原理與 第一種方法 類似,本次采用 stringBuffer 類中的 append 方法進行操作,我認為效率應(yīng)該高于第一種。

    public String deleteCharString8(String sourceString, char chElemData) {
        StringBuffer stringBuffer = new StringBuffer("");
        for (int i = 0; i < sourceString.length(); i++) {
            if (sourceString.charAt(i) != chElemData) {
                stringBuffer.append(sourceString.charAt(i));
            }
        }
        return stringBuffer.toString();
    }

第十種方法

采用 stringBuffer 類中的 replace and indexOf 方法(_ 故意湊方法)

代碼如下:

    public String deleteCharString9(String sourceString, char chElemData) {
        String tmpString = "";
        tmpString += chElemData;
        StringBuffer stringBuffer = new StringBuffer(sourceString);
        int iFlag = -1;
        do {
            iFlag = stringBuffer.indexOf(tmpString);
            if (iFlag != -1) {
                stringBuffer = stringBuffer.replace(iFlag, iFlag + 1, "");
            }
        } while (iFlag != -1);
        return stringBuffer.toString();
    }

第十一種方法

采用 stringBuffer 類中的 deleteCharAt 和 indexOf 直接刪除

    public String deleteCharString10(String sourceString, char chElemData) {
        String tmpString = "";
        tmpString += chElemData;
        StringBuffer stringBuffer = new StringBuffer(sourceString);
        int iFlag = -1;
        do {
            iFlag = stringBuffer.indexOf(tmpString);
            if (iFlag != -1) {
                stringBuffer.deleteCharAt(iFlag);
            }
        } while (iFlag != -1);
        return stringBuffer.toString();
    }

程序運行截圖:

image

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析Java中XPath和JsonPath以及SpEL的用法與對比

    淺析Java中XPath和JsonPath以及SpEL的用法與對比

    XPath,即XML路徑語言,是一種用于在XML文檔中查找信息的語言,JsonPath是從XPath中發(fā)展而來的,專門用于JSON數(shù)據(jù)格式,本文主要來講講他們的用法與區(qū)別,需要的可以參考下
    2023-11-11
  • java的jdk基礎(chǔ)知識點總結(jié)

    java的jdk基礎(chǔ)知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于java的jdk基礎(chǔ)知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • MyBatis 動態(tài) SQL 優(yōu)化之標簽的實戰(zhàn)與技巧(常見用法)

    MyBatis 動態(tài) SQL 優(yōu)化之標簽的實戰(zhàn)與技巧(常見用法)

    本文通過詳細的示例和實際應(yīng)用場景,介紹了如何有效利用這些標簽來優(yōu)化 MyBatis 配置,提升開發(fā)效率,確保 SQL 的高效執(zhí)行和安全性,感興趣的朋友跟隨小編一起看看吧
    2025-04-04
  • Java并發(fā)編程預(yù)防死鎖過程詳解

    Java并發(fā)編程預(yù)防死鎖過程詳解

    這篇文章主要介紹了Java并發(fā)編程預(yù)防死鎖過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 使用Maven進行依賴排除的詳細步驟

    使用Maven進行依賴排除的詳細步驟

    在Maven中,依賴排除是一種常見的技術(shù),用于從項目的依賴中排除特定的傳遞性依賴,這通常用于解決依賴沖突或避免引入不需要的庫,以下是如何在Maven中使用依賴排除的詳細步驟,包括代碼示例,需要的朋友可以參考下
    2024-11-11
  • redis之基于SpringBoot實現(xiàn)Redis stream實時流事件處理方式

    redis之基于SpringBoot實現(xiàn)Redis stream實時流事件處理方式

    這篇文章主要介紹了redis之基于SpringBoot實現(xiàn)Redis stream實時流事件處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Springboot內(nèi)置tomcat配置虛擬路徑過程解析

    Springboot內(nèi)置tomcat配置虛擬路徑過程解析

    這篇文章主要介紹了Springboot內(nèi)置tomcat配置虛擬路徑過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java進階之SPI機制詳解

    Java進階之SPI機制詳解

    Java SPI機制在很多大型中間建碼,例如Dubbo中均有采用,屬于高級Java開發(fā)的進階必備知識點,務(wù)必要求掌握.文中有非常詳細的代碼示例及解釋,需要的朋友可以參考下
    2021-05-05
  • Java 中通過 key 獲取鎖的方法

    Java 中通過 key 獲取鎖的方法

    這篇文章主要介紹了Java 中通過 key 獲取鎖,本文演示如何對某個 key 加鎖,以保證對該 key 的并發(fā)操作限制,可以實現(xiàn)同一個 key 一個或者多個線程同時執(zhí)行,需要的朋友可以參考下
    2022-11-11
  • 前端如何調(diào)用后端接口進行數(shù)據(jù)交互詳解(axios和SpringBoot)

    前端如何調(diào)用后端接口進行數(shù)據(jù)交互詳解(axios和SpringBoot)

    一般來講前端不會給后端接口,而是后端給前端接口的情況比較普遍,下面這篇文章主要給大家介紹了關(guān)于前端如何調(diào)用后端接口進行數(shù)據(jù)交互的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03

最新評論

栖霞市| 永和县| 卢湾区| 许昌县| 新民市| 富民县| 潼关县| 三江| 彩票| 大庆市| 太仆寺旗| 新建县| 定远县| 大洼县| 石城县| 南宁市| 寿宁县| 富蕴县| 蕉岭县| 濮阳县| 类乌齐县| 田东县| 东山县| 沂源县| 金秀| 阿拉善左旗| 乐东| 井陉县| 长岛县| 嘉鱼县| 乌兰县| 忻州市| 濮阳市| 楚雄市| 海安县| 定陶县| 错那县| 辛集市| 抚远县| 明光市| 卫辉市|