用字符串中的引号替换转义引号

时间:2015-02-19 07:28:23

标签: ruby regex string escaping

所以我在用字符串替换\“时遇到了问题。

我的目标: 给定一个字符串,如果字符串中有一个转义引号,则只用引号

替换它

例如:

"hello\"74"  would be "hello"74"
simp"\"sons would be simp"sons
jump98" would be jump98"

我目前正在尝试这个:但显然这不起作用并且搞砸了一切,任何帮助都会很棒

str.replace "\\"", "\""

3 个答案:

答案 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 "\\"", "\""因两个原因无效:

  1. 这是错误的方法。 String#replace替换整个字符串,您正在寻找String#gsub
  2. "\\""不正确:"启动字符串,\\是反斜杠(正确转义),"结束字符串。最后一个"开始一个新字符串。
  3. 你要么逃避双引号:

    puts "\\\"" #=> \"
    

    或使用单引号:

    puts '\\"' #=> \"
    

    示例:

    content = <<-EOF
    "hello\"74"
    simp"\"sons
    jump98"
    EOF
    
    puts content.gsub('\\"', '"')
    

    输出:

    "hello"74"
    simp""sons
    jump98"