我正在做一个需要删除多余字母的项目。消除单词中的多余字符
如果出现一个字母三次或三次以上连续,我们把它浓缩到一个字母
-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