Ruby:使用regexp扫描后无法将String转换为Symbol

时间:2019-02-01 22:05:42

标签: ruby-on-rails ruby

在我的字符串上运行regexp之后,我返回了所有带有scan的数学信息(它返回了一个字符串数组)。我尝试将每个元素都转换为_sym,但无法正常工作。

我的代码如下:

path = "tests/:id/question/:title"

res = path.scan(/:\w+/)

res.map!(&:to_sym)

最终我得到:

=> [:":id", :":title"]

代替[:id, :title]

1 个答案:

答案 0 :(得分:5)

这是因为使用/:\ w + /,您还将在字符串中获得“:”。

尝试不带“:”,然后就可以将这些字符串转换为符号:

'tests/:id/question/:title'.scan(/(?<=:)\w+/).map(&:to_sym)
# [:id, :title]