这可能是预期的行为,而不是错误。根据文档,将数组分开:
根据划界值或可选块的结果将阵列分为一个或多个子阵列。
这不能保证连续或领先的空间。
另一方面, 红宝石核心文档 为了 String#split
状态:
如果图案是字符串,则在拆分str时将其内容用作定界符。如果图案是单个空间,则str在空格上分开,领先的空格和连续的空格字符忽略了。
如您所见,您期望的行为仅适用于空格,而不仅仅是任何字符串。
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
当分裂数组时,“空格”的概念实际上不再有意义。因此,我认为这种行为是明智的,即使起初也许是违反直觉的。