【问题标题】:How do i transform a string to become a comma separated in ruby?如何将字符串转换为用 ruby​​ 分隔的逗号?
【发布时间】:2014-08-15 21:36:59
【问题描述】:

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

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  " 

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

【问题讨论】:

  • 您确实需要向我们展示您的尝试。很难判断您是否在寻找代码。
  • 您想保留末尾的空格,而不是开头的空格?准备和提交答案很烦人,却发现在发布问题仅仅 30 分钟后就已经选择了另一个答案,尤其是当它是唯一收到的答案时。

标签: ruby regex


【解决方案1】:

或者这个:

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

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

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

【讨论】:

  • 虽然这确实适用于给定输入/输出的 OP,但请注意,如果您的字符串中有合法的逗号/空格,这可能无法正常工作。
  • @JustinWood:可能是的,但你为什么要在电子邮件地址列表中使用“合法的逗号/空格”?
  • 就像我说的。这适用于给定的场景。只是不要期望它适用于所有情况。
  • @JustinWood,让我直说吧;您是说如果提出不同的问题,此解决方案可能不起作用?
【解决方案2】:

如果我正确理解了问题(在末尾保留空格并仅用逗号分隔单词等),这是一种方法:

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  "

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2018-08-16
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多