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(' ') endUna soluzione migliore e piu’ rubyish puo’ essere:
def expand(str, tablen=8) str.split("\t").inject { |a,b| a + ' ' * ( tablen - a.size % tablen ) + b } endIn 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? :)