簡體   English   中英

使用javascript刪除字符串中除第一個字符外的所有字符

[英]Remove all occurrences of a character except the first one in string with javascript

我有以下字符串: "# abc # def #"

我想保留第一個#並刪除隨后出現的#

因此,預期的輸出將是: "# abc def "

我使用了它並且它起作用了,但是感覺就像一個丑陋的hack:

"# abc # def #".replace("#", "[TEMP]").replace(/#/ig, "").replace("[TEMP]", "#")

如果字符串中存在[TEMP] ,它將失敗。 風險不大,但是無論如何。

我可以想到的另一種方法是逐字符地迭代字符串char,但是我覺得我錯過了一種更簡單,更明顯的方法。

如果始終是一開始,則可以執行以下操作:

 const result = '# A # B # C'.replace(/(?!^)#/g, ''); console.log(result); 

這將替換每一個在其旁邊沒有字符串開頭的#

如果它不總是出現在字符串的開頭,則最簡單的方法可能是使用replace()的回調形式:

 const result = 'SOME STUFF # A # B # C MORE STUFF'.replace(/#/g, (val, index, str) => index === str.indexOf('#') ? val : ''); console.log(result); 

基本上,此方法將獲取所有# 然后,我們只比較它的索引,如果它是第一個索引,則不會替換它。 否則,我們會的。

如果要稍微清理一下,可以避免在循環之前保存indexOf()檢查。 如果字符串很長或者您需要一噸(這對小集合來說是微不足道的收益),這將有所幫助:

 const cleanHashes = str => { const firstIndex = str.indexOf('#'); return str.replace(/#/g, (v, i) => i === firstIndex ? v : ''); } console.log(cleanHashes('# A # B # C')); console.log(cleanHashes('SOME STUFF # A # B # C MORE STUFF')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM