ruby - 为什么你不能在 Ruby 中 gsub 这个字符串?

标签 ruby regex

这些 \\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/

相关文章:

ruby-on-rails - Ruby on Rails - link_to - 类引述

ruby - 在文本文件中搜索特定单词时显示周围的单词 (Ruby)

java - 如何使用 Java 中的正则表达式删除字符串中的反斜杠?

java - 使用正则表达式在java中分割字符串

php - 解释正则表达式/^[a-zA-Z ]*/

android - Calabash Android 脚本停止

ruby-on-rails - 带有 reject_if 的 accepts_nested_attributes_for 的自定义属性版本

ruby-on-rails - 迁移中default和null有什么区别

java - 替换 Java 中的空格和其他一些字符

java - Java中正则表达式如何表达获取字符串的括号部分