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

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

如何用一些分隔符拆分String而不在Java中刪除該分隔符?

如何用一些分隔符拆分String而不在Java中刪除該分隔符?

子衿沉夜 2019-12-13 10:25:35
我在拆分時(shí)面臨問題String。我想String用一些分隔符拆分a ,但又不丟失該分隔符。當(dāng)我們somestring.split(String separator)在Java中使用method時(shí),它會(huì)拆分,String但會(huì)從中刪除分隔符部分String。我不希望這種情況發(fā)生。我想要如下結(jié)果:String string1="Ram-sita-laxman";String seperator="-";string1.split(seperator);輸出:[Ram, sita, laxman]但我希望結(jié)果如下所示:[Ram, -sita, -laxman]有沒有辦法得到這樣的輸出?
查看完整描述

3 回答

?
九州編程

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

這有點(diǎn)狡猾,但是您可以使用replace函數(shù)引入虛擬分隔符。我不知道Java方法,但在C#中可能是這樣的:


string1.Replace("-", "#-").Split("#");

當(dāng)然,您需要選擇一個(gè)虛擬分隔符,該分隔符保證不會(huì)出現(xiàn)在字符串中的任何其他位置。


查看完整回答
反對(duì) 回復(fù) 2019-12-13
?
繁花不似錦

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

string1.split("(?=-)");

之所以有效,split是因?yàn)閷?shí)際上需要一個(gè)正則表達(dá)式。您實(shí)際上看到的是“零寬度正向超前”。


我想解釋更多,但我的女兒想?yún)⒓硬柙挄?huì)。:)


編輯:回來!


為了解釋這一點(diǎn),我將首先向您展示一個(gè)不同的split操作:


"Ram-sita-laxman".split("");

這會(huì)將您的字符串分割為每個(gè)零長度的字符串。每個(gè)字符之間都有一個(gè)零長度的字符串。因此,結(jié)果是:


["", "R", "a", "m", "-", "s", "i", "t", "a", "-", "l", "a", "x", "m", "a", "n"]

現(xiàn)在,我將我的正則表達(dá)式("")修改為僅匹配零長度的字符串(如果它們后接破折號(hào))。


"Ram-sita-laxman".split("(?=-)");

["Ram", "-sita", "-laxman"]

在該示例中,?=意思是“超前”。更具體地說,這意味著“ 積極向前”。為什么要“積極”?因?yàn)槟€可以使用負(fù)前瞻(?!),所以它將在每個(gè)零長度字符串(不帶破折號(hào))上分割:


"Ram-sita-laxman".split("(?!-)");

["", "R", "a", "m-", "s", "i", "t", "a-", "l", "a", "x", "m", "a", "n"]

您還可以在()后面添加正向后視符號(hào)(lookbehind)(?<=),該符號(hào)將在每個(gè)零長度字符串(以短劃線開頭)處分割:


"Ram-sita-laxman".split("(?<=-)");

["Ram-", "sita-", "laxman"]

最后,您還可以在()后面加上負(fù)數(shù)lookbehind(?<!),以在每個(gè)不帶破折號(hào)的零長度字符串上進(jìn)行分割:


"Ram-sita-laxman".split("(?<!-)");

["", "R", "a", "m", "-s", "i", "t", "a", "-l", "a", "x", "m", "a", "n"]

這四個(gè)表達(dá)式統(tǒng)稱為環(huán)視表達(dá)式。


獎(jiǎng)勵(lì):將它們放在一起

我只是想展示一個(gè)我最近遇到的示例,該示例結(jié)合了兩個(gè)環(huán)視表達(dá)式。假設(shè)您希望將一個(gè)CapitalCase標(biāo)識(shí)符分成其令牌:


"MyAwesomeClass" => ["My", "Awesome", "Class"]

您可以使用以下正則表達(dá)式完成此操作:


"MyAwesomeClass".split("(?<=[a-z])(?=[A-Z])");

這會(huì)在每個(gè)零長度的字符串上分割,該字符串前面是小寫字母((?<=[a-z])),然后是大寫字母((?=[A-Z]))。


此技術(shù)還可以使用camelCase標(biāo)識(shí)符。


查看完整回答
反對(duì) 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 784 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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