这些\\n
出现在我的字符串中,即使它只应该是\n
。
但如果我这样做:
"\n".gsub('\\n','\b')
它返回:
"\n"
理想情况下,我正在尝试找到一个可以重写此字符串的正则表达式:
"R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\\nZjTX\\n"
不显示两个反斜杠,但只显示一个:
"R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\nZjTX\n"
但我所做的任何正则表达都行不通。我可以编写\n
并在其中放置X
之类的东西,但是如果我在其中添加\
,那么Ruby会使用额外的\
来逃避它,这会导致我的{{1}}加密模块,因为它需要具体。
有什么想法吗?
答案 0 :(得分:3)
在双引号与单引号的字符串中使用时,你陷入了不同的转义含义的陷阱。双引号字符串允许使用转义字符。因此,这里"\n"
实际上是包含单个换行符的单字符字符串。将其与'\n'
进行比较,gsub
是一个包含字面反斜杠后跟字符n的双字符字符串。
这解释了,您的"\\n".gsub('\n','\b')
并不匹配。如果您使用以下代码,它应该工作:
string = "R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\\nZjTX\\n"
new_string = string.gsub("\\n", "\n")
对于您的实际问题,您可以使用此
{{1}}