所以我在用字符串替换\“时遇到了问题。
我的目标: 给定一个字符串,如果字符串中有一个转义引号,则只用引号
替换它例如:
"hello\"74" would be "hello"74"
simp"\"sons would be simp"sons
jump98" would be jump98"
我目前正在尝试这个:但显然这不起作用并且搞砸了一切,任何帮助都会很棒
str.replace "\\"", "\""
答案 0 :(得分:2)
我猜你被\
的工作方式弄错了。您永远不能将字符串定义为
a = "hello"74"
转义字符仅在定义变量时使用,而不是值的一部分。例如:
a = "hello\"74"
# => "hello\"74"
puts a
# hello"74
但是,如果我的上述假设不正确,以下示例可以帮助您:
a = 'hello\"74'
# => "hello\\\"74"
puts a
# hello\"74
a.gsub!("\\","")
# => "hello\"74"
puts a
# hello"74
修改强>
以上gsub
将替换\
的所有实例,但OP只需将'"
替换为"
。以下应该做的诀窍:
a.gsub!("\\\"","\"")
# => "hello\"74"
puts a
# hello"74
答案 1 :(得分:1)
您可以使用gsub
:
word = 'simp"\"sons';
print word.gsub(/\\"/, '"');
//=> simp""sons
答案 2 :(得分:0)
我正在尝试
str.replace "\\"", "\""
但显然这不起作用并且搞砸了一切,任何帮助都会很棒
str.replace "\\"", "\""
因两个原因无效:
String#replace
替换整个字符串,您正在寻找String#gsub
。"\\""
不正确:"
启动字符串,\\
是反斜杠(正确转义),"
结束字符串。最后一个"
开始一个新字符串。你要么逃避双引号:
puts "\\\"" #=> \"
或使用单引号:
puts '\\"' #=> \"
示例:
content = <<-EOF
"hello\"74"
simp"\"sons
jump98"
EOF
puts content.gsub('\\"', '"')
输出:
"hello"74"
simp""sons
jump98"