2016-05-13 82 views
0

split(%r{\s*})将每个字母忽略空格中:`分裂的含义(%R { S *})`

"hi mom".split(%r{\s*}) # => ["h", "i", "m", "o", "m"] 

为什么能%r{\s*}这种方式工作?

+0

执行'%r {\ s *}'返回'/ \ s * /'。这是否更清楚?这是Ruby的[百分比字符串]之一(http://ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html)。 (搜索“百分比字符串”。) –

+2

目前还不清楚你的问题是什么。什么使你对这个代码的工作方式感到困惑? –

+0

http://meta.stackoverflow.com/questions/253894/how-to-handle-explain-how-this-code-dump-works-questions/253896#comment17104_253896 –

回答

2

%r{...}(或%r[...],或%r#....#,或者%rX...X ...你的要点)相当于/.../,一个RegExp文字。在一个正则表达式中,\s是一个空格,并且*是前一个标记的0个或更多个:表达式一起表示“在每个点处将字符串拆分为零或多个空格”。在字符串的每个字符之间(除了空格之外,它们被认为是可识别的分隔符)之间有零个或多个空格。

1

%r{\s*}匹配一个任意的零宽度位置或一个或多个空格,这些空格被排除在分割结果之外。