我正在做一個需要刪除多餘字母的項目。消除單詞中的多餘字符
如果出現一個字母三次或三次以上連續,我們把它濃縮到一個字母
-Happyyyyyy -> Happy
-awwwsum -> awsum
-cooool -> col
我使用Ruby 1.8.7做到這一點。我如何去做這件事?
我正在做一個需要刪除多餘字母的項目。消除單詞中的多餘字符
如果出現一個字母三次或三次以上連續,我們把它濃縮到一個字母
-Happyyyyyy -> Happy
-awwwsum -> awsum
-cooool -> col
我使用Ruby 1.8.7做到這一點。我如何去做這件事?
這裏是你如何做到這一點:
result = subject.gsub(
/(.) # Match a single character, capture it in group 1
\1{2,} # Match the same character 2 or more times, as many as possible/x,
'\1') # Replace with the one captured character
結果:
> subject = "happyyyy daaaaays!!!"
=> "happyyyy daaaaays!!!"
> result = subject.gsub(/(.)\1{2,}/, '\1')
=> "happy days!"
可能值得一提的是,這不適用於像「happyy」或「awwsum」這樣的東西,其中少於3個重複。 – 2014-09-21 07:28:51
少於3個傻瓜,使用'(。)\ 1 +'。 @Rawing根據操作需要回答。 – 2014-09-21 07:31:48
@AvinashRaj - 我們可以使用Rawing所說的將單詞中的重複內容壓縮到2,然後使用/(.)\1+ /來匹配末尾重複。但我們如何用一個字母來替換它? 我可以使用subject.gsub(/(。)\ 1 /,'\ 1')?? – 2014-09-21 07:50:25
你需要爲這個任務字典數據庫! – Kasramvd 2014-09-21 07:06:10