我在删除时遇到问题\n
and \r
标签。当我使用双引号时,它工作正常,否则它会离开"\"
. With gsub
,如果没有双引号,它根本不起作用。为什么?
"Remove \n".delete('\n') # result: "Remove"
'Remove \n'.delete('\n') # result: "Remove \"
我发现这是因为它不适用于数据库的结果。
单引号字符串不处理大多数转义序列。所以,当你有这个
'\n'
它的字面意思是“两个字符串,其中第一个字符是反斜杠,第二个字符是小写‘n’”。确实如此not意思是“换行符”。为了\n
要表示换行符,您必须将其放在双引号字符串内(它确实处理此转义序列)。这里有一些例子:
"Remove \n".delete('\n') # => "Remove \n" # doesn't match
'Remove \n'.delete('\n') # => "Remove \\" # see below
'Remove \n'.delete("\n") # => "Remove \\n" # no newline in source string
"Remove \n".delete("\n") # => "Remove " # properly removed
NOTE此特定示例中的反斜杠字符(第二行,在中使用单引号字符串delete
call)被简单地忽略,因为特殊的逻辑delete
方法。请参阅文档字符串#count http://ruby-doc.org/core-2.0/String.html#method-i-count了解更多信息。要绕过这个,请使用gsub
, 例如
'Remove \n'.gsub('\n', '') # => "Remove "
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)