String.scan和String.split之间的区别
Ruby中这两个( String#scan
和String#split
)有什么区别?
它们用于完全不同的目的。 String#scan
用于从字符串中提取正则表达式的匹配项并返回数组中的匹配项,而String#split
用于根据分隔符将字符串拆分为数组。 分隔符可以是静态字符串(如;
分割在单个分号上)或正则表达式(如/\s/+
分隔任何空白字符)。
String#split
的输出不包括分隔符。 相反,除分隔符之外的所有内容都将在输出数组中返回,而String#scan
的输出将仅包括分隔符匹配的内容。
# 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"]