2009-03-03 21 views
5

Uważam, że funkcja Ruby jest nieco zagmatwana. Jeśli mam linię tekstu, pętla each da mi każde słowo oddzielone spacją, a nie poszczególne znaki.Jak analizować wiersz tekstu oddzielony tabulatorami w Ruby?

Jaki jest najlepszy sposób wyszukiwania sekcji łańcucha, które są rozdzielane przez znak tabulatora. W tej chwili mam:

line.split.each do |word| 
... 
end 

ale to nie jest do końca poprawne.

Odpowiedz

16

Nie jestem pewien, czy do końca rozumiem pytanie, ale jeśli chcesz się podzielić linie na karcie postaci, można określić, że jako argument do podziału:

line.split("\t").each ... 

lub można określić ją jako wyrażenie regularne:

line.split(/\t/).each ... 

Każdy w zasadzie tylko iteracji wszystkich elementów w tablicy, a rozłam produkuje tablicę z ciągiem.

+0

Jest to proste dla zwykłego cased. Ale nie jest * to * proste. Istnieje wiele przypadków skrajnych, gdy zawartość pochodzi z zewnętrznego źródła. Nowe znaki, sekwencje specjalne, cytaty itp. Są tak różne w różnych aplikacjach. –