这些 \\n
出现在我的字符串中,即使它应该只是 \n
。
但是如果我这样做:
"\n".gsub('\\n','\b')
它返回:
"\n"
理想情况下,我试图找到一个可以重写此字符串的正则表达式:
"R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\\nZjTX\\n"
不显示两个反斜杠,而是像这样只显示一个:
"R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\nZjTX\n"
但是我做的任何正则表达式都不起作用。我可以 gsub 出 \n
并在那里放一些像 X
的东西,但是如果我在里面放一个 \
,那么 Ruby 会用一个额外的 \
会破坏我的加密模块,因为它需要特定。
有什么想法吗?
最佳答案
当在带有双引号和单引号的字符串中使用时,您将陷入转义不同含义的陷阱。双引号字符串允许使用转义字符。因此,这里的 "\n"
实际上是一个包含单个换行符的单字符字符串。将其与 '\n'
进行比较,后者是一个包含文字反斜杠后跟字符 n 的双字符字符串。
这说明,您的 gsub
不匹配。如果您使用以下代码,它应该可以工作:
"\\n".gsub('\n','\b')
对于你的实际问题,你可以使用这个
string = "R3pQvDqmz/EQ7zho2mhIeE6UB4dLa6GUH7173VEMdGCcdsRm5pernkqCgbnj\\nZjTX\\n"
new_string = string.gsub("\\n", "\n")
关于ruby - 为什么你不能在 Ruby 中 gsub 这个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386439/