الهروب من الشرطة المائلة في تعبير نمطي

أريد استبدال عنوان السلسلة من “T8/2024” إلى “T9/2024”

من الموضوع 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

لكنني أحصل على خطأ:

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

إذا كانت الكلمة التي تريد استبدالها تحتوي على الحرف “/”، فكيف يجب علينا التعامل معها؟

لا أعرف على الفور ما إذا كان هذا سيعمل أم لا

نظرًا لأنك تريد فقط استبدال “T8” بـ “T9”. ربما قم بإزالة جميع الشرطات المائلة واختبر؟

في خطأ بناء الجملة الخاص بك، يظهر أنك تفتقد علامات الاقتباس

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

ربما جرب علامات الاقتباس المفقودة الثابتة هذه

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

تمت إزالة الشرطة المائلة الإضافية أيضًا " / "

قم بالهروب منها باستخدام \:

[1] pry(main)> 'A title covering T8/2024'.gsub(/T8\/2024/, 'T9/2024')
=> "A title covering T9/2024"

كل شيء على ما يرام. شكراً جزيلاً لك، :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 "oops, something broke."
  end
end