9
Ruby中這兩個(String#scan
和String#split
)之間的區別是什麼?String.scan和String.split之間的區別
Ruby中這兩個(String#scan
和String#split
)之間的區別是什麼?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"]
有什麼區別?它們唯一共同的地方是它們都是從'String'對象或子類中調用的。什麼似乎很混亂?這個問題本來可以通過查看ruby doc來解決。 – Shoe