使用 Ruby,当术语之间可能存在可变空格时,如何将字符串转换为数组?
Posted
技术标签:
【中文标题】使用 Ruby,当术语之间可能存在可变空格时,如何将字符串转换为数组?【英文标题】:Using Ruby, how can I convert a string to an array when there may be variable whitespace between terms? 【发布时间】:2021-12-18 23:17:36 【问题描述】:假设我有一个这样的字符串:"hello:world, foo:bar,biz:baz, last:term "
我想把它转换成数组["hello:world", "foo:bar", "biz:baz", "last:term"]
基本上我想用逗号分隔,但也想用可变数量的空格分隔。我可以进行拆分,然后遍历每个术语并从任一侧去除空格,但我希望有一种更简单的方法 - 也许使用正则表达式? (我对如何使用 Regexp 非常不熟悉)。我正在使用 Ruby on Rails。
【问题讨论】:
【参考方案1】:您可以将scan
与正则表达式一起使用:
string = "hello:world, foo:bar,biz:baz, last:term "
string.scan(/[^\s,]+/)
#=> ["hello:world", "foo:bar", "biz:baz", "last:term"]
或者您可以使用split
在,
和strip
处拆分字符串以删除不需要的空格。
string = "hello:world, foo:bar,biz:baz, last:term "
string.split(',').map(&:strip)
#=> ["hello:world", "foo:bar", "biz:baz", "last:term"]
我可能更喜欢第二个版本,因为它更易于阅读和理解。此外,如果第二个版本的简单字符串方法对小字符串表现更好,我也不会感到惊讶,因为正则表达式非常昂贵,通常只值得用于更复杂或更大的任务。
【讨论】:
或string.strip.split(/\s*,\s*/)
string.delete(" ").split
浮现在脑海以上是关于使用 Ruby,当术语之间可能存在可变空格时,如何将字符串转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章