我想为两个不同的标签解析字符串,然后将每个标签存储在数据库中。我们称这些为 tag1 和 tag2。我有一个分隔符,“?#”是 tag1 和 tag2 之间的分隔符。
假设
t = "random text blah firsttag?#secondtag more blah"
目标:tag1 应该是“firsttag”,tag2 应该是“secondtag”,没有前后随机文本。每个都应该作为对象存储在数据库中。
我试过类似的东西:
t.split
但它返回
["random text blah firsttag", "secondtag more blah"]
并包含随机文本。当它到达任一方向的第一个空间时,如何让拆分停止?
如果字符串中有多个标记对,我希望它也能工作,例如,如果:
m = "random firsttag#?secondtag blah blah 1sttag#?2ndtag blah blah blah"
我对 ruby 和 rails 都很陌生,所以非常感谢你在这方面的帮助!
最佳答案
您可以将正则表达式与拆分结合使用:
tags = t.match(/\S+\?#\S+/)[0].split('?#')
解释
首先让我们捕捉文本中有趣的部分,即 tag?#tag2
。我们将为此使用正则表达式:
/\S+\?#\S+/
解释:
\S+
捕获定界符(标记)前的非空白字符
\?#
捕获分隔符标记
\S+
捕获所有尾随的非空白字符 (tag2)
该正则表达式的匹配项(我们使用 [0]
访问的是:
firsttag?#secondtag
然后我们只使用分隔符进行拆分,然后我们得到带有标签的数组。
干杯!
PS:我重新标记了帖子,因为它与 ruby-on-rails
无关。这只是普通的 ruby
关于ruby - Ruby中解析字符串然后存入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564632/