gsub使用/或“?”之间有什么区别?

时间:2012-11-04 08:03:54

标签: ruby-on-rails ruby

我正在尝试使用gsub将"?""."替换为空格。

我意识到这是gsub(".", "")gsub(/./, "")之间的区别,但我不知道它是什么。有人可以解释一下吗?

此外,gsub("?","")似乎有效,gsub(/?/,"")不起作用。 我们如何让gsub(/?/,"")工作?

3 个答案:

答案 0 :(得分:3)

gsub("?", "")与文字?匹配,而gsub(/?/, "")使用regular expressions查找匹配项。在正则表达式中,?表示前一个字符可以存在0或1次。为了匹配文字?,您必须转义它:

gsub(/\?/, "")

另请参阅有关gsub

的ruby文档

答案 1 :(得分:2)

最后,如上所述/reg/表示"str"仅表示字符串时的正则表达式。您的目标是从字符串中删除?.。 Regexp将完成这项工作:

gsub(/[?.]/, '')

您可以阅读有关ruby regexp here的更多信息。在我的示例中,/[abc]/将匹配单个字符abc

答案 2 :(得分:1)

前者是字面上找“?”字符并替换它们,而后者是查找给定字符的0或1的出现。 ?对正则表达式具有特殊含义,您可以使用/分隔。