我有一个字符串:
"hello\n\nsomeletters\t\nmoreletters\n"
我想要的是什么:
"hello\\n\\nsomeletters\\t\\nmoreletters\\n"
怎么做?
我知道gsub
方式。但这听起来很简单,似乎是一个普遍的问题,因此我确信Ruby Gods已经向我们发送了一个解决方案。
答案 0 :(得分:1)
有不同的可能性。最接近您想要的是Regexp#escape
:
Regexp.escape "hello\n\nsomeletters\t\nmoreletters\n"
#⇒ "hello\\n\\nsomeletters\\t\\nmoreletters\\n"
但请注意,它会逃避其他一些在正则表达式中具有特殊含义的符号。
另外,我们有Shellwords#escape
,这可能不是你想要的。
仅用于转义反斜杠没有专用方法,因为这个操作基本上没什么意义,不值得调用它而不是:
"hello\n\nsomeletters\t\nmoreletters\n".gsub(
/\n|\t/, {"\n" => "\\n", "\t" => "\\t"}
)
请注意,初始字符串中有没有斜线字符,因此您要匹配所有预期的序列。