Ciąg znaków o długości zero zwracany jest z łańcucha # split

W Ruby 1.9.3 (i prawdopodobnie wcześniejszych wersjach, nie jestem pewien) próbuję dowiedzieć się, dlaczego metoda Ruby's String # split daje mi pewne wyniki. Rezultaty, które otrzymuję, wydają się sprzeczne z intuicją w stosunku do tego, czego mógłbym się spodziewać. Oto przykład:

"abcabc".split("b") #=> ["a", "ca", "c"]
"abcabc".split("a") #=> ["", "bc", "bc"]
"abcabc".split("c") #=> ["ab", "ab"]

Pierwszy przykład zwraca dokładnie to, czego mógłbym się spodziewać.

Ale w drugim przykładzie nie rozumiem dlaczego #split zwraca łańcuch o zerowej długości jako pierwszą wartość zwróconej tablicy. Jakie jest tego uzasadnienie? Tego właśnie oczekiwałbym:

"abcabc".split("a") #=> ["bc", "bc"]

I po tej samej linii, jak w trzecim przykładzie nie ma ciągów o zerowej długości? Jeśli drugi przykład zwraca łańcuch o długości zerowej jako pierwszą wartość, to ostatni przykład powinien zwracać ten sam, co jego ostatnia wartość.

Oświeć mnie, czego mi tu brakuje?

EDYTOWAĆ: Patrząc bardziej na to, zdaję sobie sprawę, dlaczego jest to zachowanie domyślne i dlaczego moje myślenie jest całkowicie błędne. Gdybyśmy na przykład przeszli przez plik CSV, dzieląc się na każdą kolumnę, nasze dane byłyby odrzucane, ponieważ puste kolumny wiodące byłyby ignorowane.

Ważne jest również, aby pamiętać, że to pytanie nie jest związane tylko z Ruby - uczę się, że wiele innych języków zachowuje się dokładnie w ten sam sposób. Po prostu korzystałem z Rubiego, gdy dowiedziałem się o tym.

questionAnswers(2)

yourAnswerToTheQuestion