2016-05-13 92 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*}匹配一個任意的零寬度位置或一個或多個空格,這些空格被排除在分割結果之外。