Eliminare Tab

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


Eliminare i tab e sostituirli con degli spazi risulta molto utile quando si ha a che fare con testi scritti da persone diverse, o per venire incontro al proprio gusto.

Un soluzione semplice: dividiamo la stringa in sottostringhe, e le mettiamo temporaneamente in un array. Poi calcoliamo quanti spazi dobbiamo inserire, ed alla fine riuniamo il tutto. Agiungiamo ancora uno spazio, visto che la split() ha rimosso un carattere :

 def expand(stringa, tablen=8)
    res = []
    for substr in stringa.split("\t")
        res.push substr
        res.push ' '*(tablen - stringa.size %tablen)
    end    
    return res.join(' ')
 end
Una soluzione migliore e piu’ rubyish puo’ essere:
 def expand(str, tablen=8)
  str.split("\t").inject { |a,b| a +  ' ' * ( tablen - a.size % tablen )  + b }
 end
In pratica invece di usare un for esplicitamente usiamo inject() che applica il blocco ogni volta ad un elemento dell’array ottenuto da split() ed al risultato della computazione precedente. bello vero? :)
Updated on November 26, 2005 13:02 by Ruby Fan (151.37.150.7)