Строка нулевой длины, возвращаемая из String # split

В Ruby 1.9.3 (и, возможно, в более ранних версиях, не уверен) я пытаюсь выяснить, почему метод Ruby String # split дает мне определенные результаты. Результаты, которые я получаю, кажутся нелогичными из того, что я ожидал. Вот пример:

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

Здесь первый пример возвращает именно то, что я ожидал.

Но во втором примере я не совсем понимаю, почему #split возвращает строку нулевой длины в качестве первого значения возвращаемого массива. В чем причина этого? Это то, что я ожидал бы вместо этого:

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

И по этой же линии, почему в третьем примере не возвращается конечная строка нулевой длины? Если второй пример возвращает строку нулевой длины в качестве первого значения, тогда последний пример должен возвращать то же самое, что и последнее значение.

Просвети меня, что мне здесь не хватает ??

EDITБолее детально, я понимаю, почему это поведение по умолчанию и почему мое мышление совершенно неверно. Если бы мы, например, просмотрели файл CSV, разбив каждый столбец, наши данные были бы отброшены, потому что пустые ведущие столбцы будут игнорироваться.

Также важно отметить, что этот вопрос не касается только изучения Ruby-I, что многие другие языки ведут себя точно так же. Я просто использовал Ruby, когда узнал об этом.

Ответы на вопрос(2)

Ваш ответ на вопрос