split(%r{\s*})
расщепляется каждое письмо, игнорируя пробелы как в:Значение `разделения (% г { с *})`
"hi mom".split(%r{\s*}) # => ["h", "i", "m", "o", "m"]
Почему может %r{\s*}
работать таким образом?
split(%r{\s*})
расщепляется каждое письмо, игнорируя пробелы как в:Значение `разделения (% г { с *})`
"hi mom".split(%r{\s*}) # => ["h", "i", "m", "o", "m"]
Почему может %r{\s*}
работать таким образом?
%r{...}
(или %r[...]
или %r#....#
или %rX...X
... Вы получаете суть) эквивалентно /.../
, в RegExp буквальным. В регулярном выражении \s
- это пробел, а *
- это 0 или более предшествующего токена: вместе выражение выражает «разбиение строки в каждой точке имеет нулевое или большее количество пробелов». Между каждым символом строки есть ноль или больше пробелов (кроме пробела, который проглатывается как распознанный разделитель).
%r{\s*}
соответствует произвольной позиции нулевой ширины или одному или нескольким местам, которые исключены из результата разделения.
Выполнение '% r {\ s *}' возвращает '/ \ s * /'. Означает ли это, что это более ясно? Это одна из [процентных строк] Ruby (http://ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html). (Искать «процентные строки».) –
Непонятно, каков ваш вопрос. Что смущает вас о том, как работает этот код? –
http://meta.stackoverflow.com/questions/253894/how-to-handle-explain-how-this-code-dump-works-questions/253896#comment17104_253896 –