这两个有什么区别(String#scan
and String#split
)在红宝石中?
它们服务于完全不同的目的。String#scan http://www.ruby-doc.org/core-1.9.3/String.html#method-i-scan用于从字符串中提取正则表达式的匹配项并将匹配项返回到数组中,而String#split http://www.ruby-doc.org/core-1.9.3/String.html#method-i-split旨在根据分隔符将字符串拆分为数组。分隔符可以是静态字符串(例如;
以单个分号分割)或正则表达式(例如/\s/+
分割任何空白字符)。
的输出String#split
不包括分隔符。相反,除了分隔符之外的所有内容都将在输出数组中返回,而String#scan
would only包括与分隔符匹配的内容。
# A delimited string split on | returns everything surrounding the | delimiters
"a|delimited|string".split("|")
# Prints: ["a", "delimited", "string"]
# The same string scanninng for | only returns the matched |
"a|delimited|string".scan("|")
# Prints: ["|", "|"]
上述两者也都接受正则表达式来代替简单字符串"|"
.
# Split on everything between and including two t's
"a|delimited|string".split(/t.+t/)
# Prints: ["a|delimi", "ring"]
# Search for everything between and including two t's
"a|delimited|string".scan(/t.+t/)
# Prints: ["ted|st"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)