2013-01-24 44 views
1

挤字符串中多字符的最佳方法是什么?红宝石挤压双字符

Example: 
hahahahahaha => ha 
lalalala => la 
awdawdawdawd => awd 

str.squeeze("ha") # doesn't work 
str.tr("haha", "ha") # doesn't work 

回答

3
def squeeze(s) 
    s.gsub(/(.+?)\1+/, '\1') 
end 

puts squeeze('hahahaha')     # => 'ha' 
puts squeeze('awdawdawd')     # => 'awd' 
puts squeeze('hahahaha something else') # => 'ha something else' 
+0

感谢您的字符串,但它不与前者一起工作。 :“hahahaha别的东西” – mitch

+0

@MichałK。好的,我已经更新了答案 – Baldrick

+0

完美!非常感谢你 ! – mitch

3

您可以使用基于正则表达式搜索和替换:

str.gsub(/(ha)+/, 'ha') 
+0

谢谢您的解决方案,但与此我必须定义应挤压 – mitch