首页 > 解决方案 > 使用 Ruby,当术语之间可能存在可变空格时,如何将字符串转换为数组?

问题描述

想象一下我有一个这样的字符串:"hello:world, foo:bar,biz:baz, last:term "

我想把它转换成一个数组["hello:world", "foo:bar", "biz:baz", "last:term"]

本质上,我想用逗号分隔,但也想用可变数量的空格分隔。我可以进行拆分,然后遍历每个术语并从任一侧去除空格,但我希望有一种更简单的方法 - 也许使用正则表达式?(我对如何使用 Regexp 非常不熟悉)。我正在使用 Ruby on Rails。

标签: ruby-on-railsregexruby

解决方案


您可以使用正则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"]

我可能更喜欢第二个版本,因为它更容易阅读和理解。此外,如果第二个版本的简单字符串方法对小字符串表现更好,我不会感到惊讶,因为正则表达式非常昂贵,通常只值得用于更复杂或更大的任务。


推荐阅读