第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在Java中替換不區(qū)分大小寫的文字子字符串

如何在Java中替換不區(qū)分大小寫的文字子字符串

紅顏莎娜 2019-10-28 14:44:32
使用replace(CharSequence target, CharSequence replacement)String中的方法,如何使目標(biāo)不區(qū)分大小寫?例如,它現(xiàn)在的工作方式:String target = "FooBar";target.replace("Foo", "") // would return "Bar"String target = "fooBar";target.replace("Foo", "") // would return "fooBar"如何使它替換(或如果有更合適的方法)不區(qū)分大小寫,以便兩個(gè)示例都返回“ Bar”?
查看完整描述

3 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

也許不如其他方法那么優(yōu)雅,但是它非常扎實(shí)且易于遵循,尤其是。對(duì)于剛接觸Java的人。讓我了解String類的一件事是:它已經(jīng)存在很長(zhǎng)時(shí)間了,雖然它支持使用regexp進(jìn)行全局替換和使用Strings(通過(guò)CharSequences)進(jìn)行全局替換,但最后一個(gè)沒(méi)有簡(jiǎn)單的布爾參數(shù):'isCaseInsensitive'。確實(shí),您曾想過(guò),只需添加一個(gè)小開關(guān),就可以避免它的缺失給初學(xué)者帶來(lái)的所有麻煩?,F(xiàn)在在JDK 7上,String 仍然不支持這一功能!


好吧,反正我會(huì)停止抓緊。對(duì)于特別喜歡Java的每個(gè)人,這里都是您可以剪切并粘貼的deus ex machina。就像我說(shuō)的那樣,它不那么優(yōu)雅,不會(huì)贏得任何出色的編碼獎(jiǎng),但是它有效并且可靠。任何意見(jiàn),請(qǐng)隨時(shí)貢獻(xiàn)。(是的,我知道,StringBuffer可能是管理兩個(gè)字符串突變行的更好選擇,但交換技術(shù)很容易。)


public String replaceAll(String findtxt, String replacetxt, String str, 

        boolean isCaseInsensitive) {

    if (str == null) {

        return null;

    }

    if (findtxt == null || findtxt.length() == 0) {

        return str;

    }

    if (findtxt.length() > str.length()) {

        return str;

    }

    int counter = 0;

    String thesubstr = "";

    while ((counter < str.length()) 

            && (str.substring(counter).length() >= findtxt.length())) {

        thesubstr = str.substring(counter, counter + findtxt.length());

        if (isCaseInsensitive) {

            if (thesubstr.equalsIgnoreCase(findtxt)) {

                str = str.substring(0, counter) + replacetxt 

                    + str.substring(counter + findtxt.length());

                // Failing to increment counter by replacetxt.length() leaves you open

                // to an infinite-replacement loop scenario: Go to replace "a" with "aa" but

                // increment counter by only 1 and you'll be replacing 'a's forever.

                counter += replacetxt.length();

            } else {

                counter++; // No match so move on to the next character from

                           // which to check for a findtxt string match.

            }

        } else {

            if (thesubstr.equals(findtxt)) {

                str = str.substring(0, counter) + replacetxt 

                    + str.substring(counter + findtxt.length());

                counter += replacetxt.length();

            } else {

                counter++;

            }

        }

    }

    return str;

}


查看完整回答
反對(duì) 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 1370 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)