在我的字符串上运行regexp之后,我返回了所有带有scan的数学信息(它返回了一个字符串数组)。我尝试将每个元素都转换为_sym,但无法正常工作。
我的代码如下:
path = "tests/:id/question/:title"
res = path.scan(/:\w+/)
res.map!(&:to_sym)
最终我得到:
=> [:":id", :":title"]
代替[:id, :title]
答案 0 :(得分:5)
这是因为使用/:\ w + /,您还将在字符串中获得“:”。
尝试不带“:”,然后就可以将这些字符串转换为符号:
'tests/:id/question/:title'.scan(/(?<=:)\w+/).map(&:to_sym)
# [:id, :title]