Escape Di Caratteri Speciali
Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina
Capita di aver bisogno di effettuare l’escape di alcuni caratteri in delle stringhe. (apici singoli o doppi, slasho backslash, etc..). Ad esempio, se l’output del vostro programma deve essere passato ad una shell, dovrete aggiungere un “
\” davanti a quei simboli. Per la soluzione e’ ovvio che bisogna usare String#gsub(), e per fare le cose in modo chiaro useremo la sintassi di gsub che accetta un blocco:
stringa.gsub(/[caratteri]/) { |match| "\\"+match }in pratica tutto questo significa: sostituisci ogni carattere contenuto tra le parentesi quadre con il risultato del blocco. Il blocco prende in input ogni carattere contenuto tra le parentesi quadre, e gli aggiunge una “
\” davanti. Dobbiamo scriverne due per far capire a ruby che ne vogliamo una, come in tutti i limguaggi, anche qui abbiamo bisogno di escape :)
Se invece volessimo raddoppiare i caratteri scriveremmo:
stringa.gsub(/[carat]/) { |match| match*2 }
(questo e’ utile, ad esempio, se usate la stringa all’interno di una chiamata a sprint o altre funzioni di formattazione di stringhe)
stringa.gsub(/c/) { |match| match*2 }Un tipico esempio di come fare l’escape di apici per usare una stringa in una shell:
str.gsub(/['"]/) { |match| match*2 }