Non utilizzare più metodi: mantenerlo semplice.
Esci dal #, dal backslash e dalla doppia quota.
irb(main):001:0> foo = "`[email protected]\#$%^&*()_-+={}|[]\\:\";'<>?,./"
=> "`[email protected]\#$%^&*()_-+={}|[]\\:\";'<>?,./"
Oppure, se non si vuole sfuggire al # (il carattere di sostituzione per le variabili in stringhe tra doppi apici), utilizzare e la fuga apici invece:
irb(main):002:0> foo = '`[email protected]#$%^&*()_-+={}|[]\\:";\'<>?,./'
=> "`[email protected]\#$%^&*()_-+={}|[]\\:\";'<>?,./"
% q è grande per molte altre stringhe che non contengono ogni carattere di punteggiatura ASCII. :)
%q(text without parens)
%q{text without braces}
%Q[text without brackets with #{foo} substitution]
Edit: Evidentemente è possibile utilizzare parentesi bilanciate all'interno% q() con successo pure, ma vorrei pensare che è un po 'pericoloso dal punto di vista di manutenzione, in quanto non c'è la semantica là implicare che sei sempre andando a bilanciare necessariamente i tuoi paren in una stringa.
fonte
2009-10-28 00:00:37
In realtà, '% q()' funziona bene anche se il testo interno ha parentesi - purché le parentesi interne siano bilanciate: 'bal =% q (pippo (()))' – Telemachus
Non c'è bisogno di scappare * qualsiasi cosa *. '% q {\' ~! @ # $%^& *() _- + = {} | [] \: "; '<>?,. /}' funziona bene. – Borodin