الهروب المزدوج والخلط المفرد في سلسلة في روبي
-
03-10-2019 - |
سؤال
أحاول الوصول إلى مسار الشبكة في البرنامج النصي Ruby الخاص بي على منصة Windows بتنسيق مثل هذا.
\\servername\some windows share\folder 1\folder2\
الآن إذا حاولت استخدام هذا كمسار ، فلن يعمل. لا يتم هروب الانزلاق العكسي بشكل صحيح لهذا البرنامج النصي.
path = "\\servername\some windows share\folder 1\folder2\"
d = Dir.new(path)
جربت كل ما يمكن أن أفكر فيه للهروب بشكل صحيح في المسار. ومع ذلك ، لا يمكنني الهروب من هذا الانزلاق العكسي - بسبب المعنى الخاص. لقد جربت عروض أسعار واحدة ، عروض أسعار مزدوجة ، هروب عكسيًا خلفًا ، باستخدام علامات اقتباس بديلة مثل ٪ q {} أو ٪ q {} ، باستخدام ASCII إلى تحويل char. لا شيء يعمل بمعنى أنني لا أفعل ذلك بشكل صحيح. :-) في الوقت الحالي ، يتمثل حل Temp في تعيين محرك الشبكة N: يشير إلى هذا المسار والوصول إليه بهذه الطريقة ، ولكن هذا ليس حلًا.
هل لدى أي شخص أي فكرة عن كيفية الهروب بشكل صحيح من عمليات التراجع العكسي؟
شكرًا لك
المحلول
فقط مضاعفة في كل اندلاء عكسي ، مثل ذلك:
"\\\\servername\\some windows share\\folder 1\\folder2\\"
نصائح أخرى
جرب هذا
puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\
طالما أنك تستخدم علامات اقتباس واحدة لتحديد السلسلة الخاصة بك (على سبيل المثال ، 'foo'
) ، واحد \
لا يحتاج إلى الهروب. إلا في الحالتين التاليتين
\\
تعمل نفسها على واحد\
. لذا،\\\\
سوف يعطيك البداية\\
انت تحتاج.- الزائدة
\
في نهاية طريقك ، سيحاول الهروب من الاقتباس الختامي حتى تحتاج إلى ملف\\
هناك ايضا.
بدلاً عن ذلك،
يمكنك تحديد مساعد أنيق لنفسك. بدلا من استخدام clunky \
فواصل المسار ، يمكنك استخدامها /
بالتزامن مع طريقة مثل هذه:
def windows_path(foo)
foo.gsub('/', '\\')
end
puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\
حلو!