Note:
Testo rimosso dalla rev 1 e
Testo aggiunto nella rev2
EliminareTab
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()split() ha rimosso un carattere :
def expand(stringa,expand(stringa, tablen=8)
tablen=8)
res = []
for substr in stringa.split("\t")
res.pushstringa.split("\t")
res.push substr
res.push
res.push ' '*(tablen'*(tablen - stringa.sizestringa.size %tablen)
%tablen)
end
return res.join('res.join(' ')
end
endUna soluzione migliore e piu’ rubyish puo’ essere:
defIn pratica invece di usare un for esplicitamente usiamoexpand(str,expand(str,tablen=8)tablen=8)str.split(”\t”).injectstr.split("\t").inject {|a,b||a,b| a +’'’' * ( tablen–-a.sizea.size % tablen ) + b } end
inject() che applica il blocco
ogni volta ad un elemento dell’array ottenuto da split() ed al
risultato della computazione precedente. bello vero? :)