ruby-on-rails - 使用 Ruby,当术语之间可能存在可变空格时,如何将字符串转换为数组?
问题描述
想象一下我有一个这样的字符串:"hello:world, foo:bar,biz:baz, last:term "
我想把它转换成一个数组["hello:world", "foo:bar", "biz:baz", "last:term"]
本质上,我想用逗号分隔,但也想用可变数量的空格分隔。我可以进行拆分,然后遍历每个术语并从任一侧去除空格,但我希望有一种更简单的方法 - 也许使用正则表达式?(我对如何使用 Regexp 非常不熟悉)。我正在使用 Ruby on Rails。
解决方案
您可以使用正则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"]
我可能更喜欢第二个版本,因为它更容易阅读和理解。此外,如果第二个版本的简单字符串方法对小字符串表现更好,我不会感到惊讶,因为正则表达式非常昂贵,通常只值得用于更复杂或更大的任务。
推荐阅读
- c - 通过 fgets 从 txt 文件中检索到的部分文本在 c 中丢失了
- ios - 检测更改文本的键盘组合
- kotlin - 使用 remoteMessage.notification.body 的实际有效负载时,smallIcon 是圆形灰色斑点
- javascript - Javascript将blob添加到html输入值
- python - Django:如何检查呈现模板的视图
- big-o - 非大O关系两边乘以同一个函数的结果?
- java - 我想使用键绑定,但它产生的动画很差
- ruby-on-rails - ruby gem 'google_drive' - 没有这样的文件或目录 - gcloud
- python - 基础神经网络,权重太高
- amazon-web-services - AWS Certificate Manager 请求报告“续订资格”的证书不合格?