Перебор подстрок одинакового размера - PullRequest
0 голосов
/ 19 февраля 2009

Я хочу преобразовать мой объект String в Enumerable из его подстрок 1-го размера (не символов), как я могу эффективно сделать это в Ruby?

Ответы [ 3 ]

7 голосов
/ 19 февраля 2009
"xyzzy".split(//) => ["x", "y", "z", "z", "y"]
3 голосов
/ 19 февраля 2009

В Ruby 1.9 (и 1.8.7) вы можете использовать each_char, чтобы надежно перебирать символы строки, включая правильную обработку многобайтовых символов и прочего. В более ранних выпусках each_char не существует, и при индексировании будут возвращаться байтовые коды, а не одиночные строки символов. В этом случае вы можете использовать

"abcdefg".split(//u)

, которая будет разбивать строку с учетом UTF-8.

Здесь есть хорошее обсуждение здесь .

1 голос
/ 19 февраля 2009

Возможно, я не понимаю ваш вопрос, но в Ruby нет разницы между символом и строкой из 1 символа.

'hello world'.each_char {|c| puts "substring is #{c}"}
...