使用 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,当术语之间可能存在可变空格时,如何将字符串转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章

当存在三个术语时应用主定理?

Java中方法内的可变参数怎么使用

术语“长度”和“大小”之间是不是存在技术差异(当然是在编程中)? [复制]

将不间断空格转换为 Ruby 中的空格

性能测试--术语解释

Capybara/Cucumber In Ruby:当不再存在元素时停止搜索