在Ruby中,当分割字符串时,#split和#chars有什么区别?
"Hello, World".split("")
#=> ["H", "e", "l", "l", "o", ",", " ", "W", "o", "r", "l", "d"]
"Hello, World".chars
#=> ["H", "e", "l", "l", "o", ",", " ", "W", "o", "r", "l", "d"]
它们都返回一个数组,而且它们都包含空格和标点符号。
是否有一种情况更适合使用其中一种?
"Hello, World".split(//)
。请注意,通常使用"Hello, World".split
,因为它等同于"Hello, World".split(/[ \t\n\r\f\v]+/)
,因为它会在包含任何数量和组合的空格、制表符、换行符、进纸符等字符串上进行拆分。 - Cary Swovelandstr = "Hello, World"
,假设你写了str.chars.map(&:upcase) #=> ["H", "E", "L", "L", "O", ",", " ", "W", "O", "R", "L", "D"]
。像 Enumerable 模块中的所有方法一样,map
的接收者是一个 Enumerator,所以在 Ruby 内部使用 Array#each 来执行str.chars.each.map(&:upcase)
... - Cary SwovelandEnumerable
方法m
,你应该写成str.each_char.m
。 - Cary Swoveland