Einen Backslash in einem Regex entkommen

Ich möchte den Stringtitel von „T8/2024“ in „T9/2024“ ändern

vom Thema How to replace a string/character in topic title? - #11 by pfaffman

Topic.where("title LIKE '%T8/2024%'").find_each do |topic|
  topic.title.gsub!(/T8\/2024/,"T9/2024")
  topic.fancy_title.gsub!(/T8\/2024/,"T9/2024")
  topic.slug.gsub!(/T8\/2024/,"T9/2024")
  puts topic.title
  begin
    topic.save!
  rescue
    puts "oops, something broke."
  end
end

Aber ich bekomme einen Fehler:

SyntaxError: unexpected integer literal, expecting ')'
  topic.title.gsub!(/T8/2024/,"T9/2024")
                        ^~~~

Wenn das Wort, das Sie ersetzen möchten, das Zeichen „/“ enthält, wie gehen wir damit um?

Ich weiß nicht auswendig, ob das funktionieren würde oder nicht.

Da Sie nur „T8“ durch „T9“ ersetzen möchten. Entfernen Sie vielleicht alle Schrägstriche und testen Sie?

In Ihrem Syntaxfehler fehlen Anführungszeichen

SyntaxError: unerwartetes Ganzzahl-Literal, erwartet ')'
  topic.title.gsub!(/T8/2024/,\"T9/2024\")
                        ^~~~

Versuchen Sie es vielleicht mit diesen fehlenden Anführungszeichen:

Topic.where("title LIKE '%T8/2024%'").find_each do |topic|
  topic.title.gsub!("T8/2024","T9/2024")
  topic.fancy_title.gsub!(/T8/2024","T9/2024")
  topic.slug.gsub!("T8/2024","T9/2024")
  puts topic.title
  begin
    topic.save!
  rescue
    puts "oops, something broke."
  end
end

Außerdem wurden zusätzliche „/“ entfernt.

1 „Gefällt mir“

Maskieren Sie es mit \\:

[1] pry(main)> 'A title covering T8/2024'.gsub(/T8\/2024/, 'T9/2024')
=> "A title covering T9/2024"
6 „Gefällt mir“

Alles läuft reibungslos. Vielen Dank :slight_smile:

Topic.where("title LIKE '%T8/2024%'").find_each do |topic|
  topic.title.gsub!(/T8\/2024/,"T9/2024")
  topic.fancy_title.gsub!(/T8\/2024/,"T9/2024")
  topic.slug.gsub!(/T8\/2024/,"T9/2024")
  puts topic.title
  begin
    topic.save!
  rescue
    puts "ups, etwas ist schiefgelaufen."
  end
end
1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.