如何将字符串转换为以红宝石分隔的逗号?

时间:2014-08-15 21:36:59

标签: ruby regex

我有两个不同的字符串输入:

commas = " e@test1.com,e@test2.com , e@test1.com  ,  e@test3.com  "
spaces = " e@test1.com e@test2.com   e@test1.com     e@test3.com  "

我想创建一个产生逗号分隔值的函数,结果如下:

expected = "e@test1.com,e@test2.com,e@test1.com,e@test3.com  " 

有什么建议吗?也许正则表达式?

2 个答案:

答案 0 :(得分:2)

或者这个:

string.strip.gsub(/[ ,]+/, ',')

注意:如您的示例所示,如果您想在字符串末尾保留空格,可以使用它(而不是strip):

string.sub(/\A +/, '').gsub(/[ ,]+(?=[^ ,])/, ',')

答案 1 :(得分:1)

如果我正确理解了这个问题(为了保留最后的间距并仅用逗号分隔单词等),这是一种方法:

def modify(string)
  string.scan(/[^\s,]+/).join(',') << string[/\s+$/]
end

modify " e@test1.com,e@test2.com , e@test1.com  ,  e@test3.com  "
  #=> "e@test1.com,e@test2.com,e@test1.com,e@test3.com  "
modify " e@test1.com e@test2.com   e@test1.com     e@test3.com  "
  #=> "e@test1.com,e@test2.com,e@test1.com,e@test3.com  "