2014-09-21 58 views
0

我正在做一個需要刪除多餘字母的項目。消除單詞中的多餘字符

如果出現一個字母三次或三次以上連續,我們把它濃縮到一個字母

-Happyyyyyy -> Happy 
-awwwsum -> awsum 
-cooool -> col 

我使用Ruby 1.8.7做到這一點。我如何去做這件事?

+0

你需要爲這個任務字典數據庫! – Kasramvd 2014-09-21 07:06:10

回答

3

這裏是你如何做到這一點:

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!" 
+0

可能值得一提的是,這不適用於像「happyy」或「awwsum」這樣的東西,其中少於3個重複。 – 2014-09-21 07:28:51

+0

少於3個傻瓜,使用'(。)\ 1 +'。 @Rawing根據操作需要回答。 – 2014-09-21 07:31:48

+0

@AvinashRaj - 我們可以使用Rawing所說的將單詞中的重複內容壓縮到2,然後使用/(.)\1+ /來匹配末尾重複。但我們如何用一個字母來替換它? 我可以使用subject.gsub(/(。)\ 1 /,'\ 1')?? – 2014-09-21 07:50:25