2013-01-24 103 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