溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

replaceFirst使用時(shí)的注意事項(xiàng)有哪些

發(fā)布時(shí)間:2022-03-02 12:29:25 來源:億速云 閱讀:138 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了replaceFirst使用時(shí)的注意事項(xiàng)有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

replaceFirst使用時(shí)的注意事項(xiàng)

公司項(xiàng)目最近有一個(gè)開發(fā)填空題的需求,經(jīng)過思索和分析,決定通過SpannableString來實(shí)現(xiàn),在這個(gè)過程中

replaceFirst給了我兩個(gè)坑:

坑一

通過UnderlineSpan在填空位置畫下劃線,并通過ClickableSpan 給填空處設(shè)置監(jiān)聽,點(diǎn)擊下滑線處便呼出帶有輸入框的對(duì)話框輸入內(nèi)容之后替換到空格處

由于UnderlineSpan對(duì)空格加下劃線在部分手機(jī)上實(shí)現(xiàn)不了,于是在填空位置首尾加上一對(duì)括號(hào)

在將輸入值賦到空處出現(xiàn)問題

例如:

content  =  我是##人,我愛##;firstValue = 中國 ;經(jīng)歷以下代碼之后:

content = content.replaceFirst(YHAnswer.SEPARATOR, “(”+fisrtValue+")");

content 變成了  我是(中國人,我愛##);預(yù)期值是  我是(中國)人,我愛##

這不知道算不算一個(gè)bug,我研究了好久,以為是括號(hào)造成的,換成別的符號(hào)甚至漢字還是如此,但不加括號(hào)卻是正常的,

最后發(fā)現(xiàn)原因是后面這個(gè)參數(shù)是拼接的,改成下面這樣就沒問題了

String before = "("+fisrtValue+")";
content = content.replaceFirst(YHAnswer.SEPARATOR, before);

坑二

在輸入過程中,難免會(huì)輸入特殊符號(hào),當(dāng)輸入$號(hào)時(shí),經(jīng)過replaceFirst后$  號(hào)就不見了

例如:

content  =  我是##人,我愛##;firstValue = 中$$國 ;經(jīng)歷以下代碼之后:

String before = "("+fisrtValue+")";
content = content.replaceFirst(YHAnswer.SEPARATOR, before);

content 變成了  我是(中國)人,我愛##);預(yù)期值是  我是(中$$國)人,我愛##

如果需求允許,可以直接屏蔽$,如果不允許則需要添加轉(zhuǎn)義字符;

String類的replaceFirst方法不好用的原因

今天正好用String的replace方法來替換下面的AND,結(jié)果發(fā)現(xiàn)怎么樣都不好用,隨即作了一下試驗(yàn),

代碼一

String str = new String("AND AAE112");  
str.replaceFirst("AND","");
System.out.println(str);

AND AAE112

代碼二

String str = new String("AND AAE112");  
String out = str.replaceFirst("AND","");
System.out.println(out);

 AAE112

可以看出,代碼二的結(jié)果是正確的,可見replaceAll并不會(huì)改變?cè)械膕tr,這和PB和PL/SQL是不同的。原因應(yīng)該是str指向的是一個(gè)地址。 

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“replaceFirst使用時(shí)的注意事項(xiàng)有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI