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)

Notate anche che se volete rimpiazzare un singolo carattere vi basterebbe scrivere:
  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 }
Updated on November 25, 2005 16:58 by Ruby Fan (151.37.134.237)