2014-09-21 55 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