ربما يكون هذا السلوك المقصود وليس خطأ. وفقا للوثائق ، تقسيم صفيف:
يقسم الصفيف إلى واحد أو أكثر من الطوائف الفرعية بناءً على قيمة تحديد أو نتيجة كتلة اختيارية.
هذا لا يجعل أي ضمانات حول المساحات المتجاورة أو الرائدة.
من ناحية أخرى ، توثيق روبي الأساسي إلى عن على String#split
تنص على:
إذا كان النمط عبارة عن سلسلة ، فسيتم استخدام محتوياته كمحدد عند تقسيم STR. إذا كان النمط مساحة واحدة ، فسيتم تقسيم STR على مساحة بيضاء ، مع تجاهل المسافة البيضاء الرائدة وتشغيل أحرف المسافة البيضاء المتجاورة.
كما ترون ، فإن السلوك الذي تتوقعه يعمل فقط مع المساحة البيضاء ، وليس لأي سلسلة فقط.
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
عند تقسيم صفيف ، لم يعد مفهوم "المسافة البيضاء" منطقية حقًا. لذلك أعتقد أن السلوك معقول ، إذا ربما يكون غير بديهي في البداية.