使用Ruby拆分数组的奇怪行为(v1.9.2)

使用Ruby拆分数组的奇怪行为(v1.9.2),ruby,arrays,split,Ruby,Arrays,Split,我试图用RubyV1.9.2处理一个数组,但它有一些奇怪的行为 最好的解释可以通过以下示例来完成: 案例1测试 调试@test1: --- - image/bmp # why this?! - " image/gif" - " image/jpg" 案例2测试 调试@test2: --- - "" # why this?! - " image/bmp" - " image/gif" - " image/jpg" 我需要什么 注意:我可以使用case2测试,

我试图用RubyV1.9.2处理一个数组,但它有一些奇怪的行为

最好的解释可以通过以下示例来完成:


案例1测试

调试@test1:

--- 
- image/bmp    # why this?!
- " image/gif"
- " image/jpg"

案例2测试

调试@test2:

--- 
- ""           # why this?!
- " image/bmp"
- " image/gif"
- " image/jpg"

我需要什么

注意:我可以使用case2测试,但我希望做得更好

我希望进行的调试:

--- 
- " image/bmp"
- " image/gif"
- " image/jpg"

在测试用例1中,结果中“image/bmp”之前没有空格,因为原始字符串中“image/bmp”之前没有空格

在测试用例2中,开头有一个空字符串,因为该字符串以逗号开头,对于字符串中的每个分隔符,结果数组中都有一个字符串,包含在该分隔符之前的内容(在本例中表示空字符串)


如果您想要显示的结果,可以在源字符串中的“image/bmp”之前添加空格(但不使用逗号)。或者,您可以按
/,*/
拆分,然后在每个字符串前面添加一个空格,并使用map。尽管坦率地说,我不明白为什么每个字符串前都要有空格。

在测试用例1中,结果中“image/bmp”之前没有空格,因为原始字符串中“image/bmp”之前没有空格

>> ", image/bmp, image/gif, image/jpg".split(/\s*,\s*/).select{|x| x!=""}
=> ["image/bmp", "image/gif", "image/jpg"]
在测试用例2中,开头有一个空字符串,因为该字符串以逗号开头,对于字符串中的每个分隔符,结果数组中都有一个字符串,包含在该分隔符之前的内容(在本例中表示空字符串)


如果您想要显示的结果,可以在源字符串中的“image/bmp”之前添加空格(但不使用逗号)。或者,您可以按
/,*/
拆分,然后在每个字符串前面添加一个空格,并使用map。尽管坦率地说,我不明白为什么在每个字符串之前都需要一个空格。

这不是ruby on Rails为什么在生成的MIME类型上需要一个标题空格@test1.split(“,”).map(&:strip)应该足够了。另外,不要使用“debug”来显示问题中的结果,这里p更好。这不是ruby on Rails为什么要在生成的MIME类型上留一个标题空间@test1.split(“,”).map(&:strip)应该足够了。也不要使用“调试”来显示问题的结果,这里p更好。@用户:使用我的上一个建议(在
/,*/
上拆分),之后不要添加空格。只需执行:“image/bmp,image/gif,image/jpg”而不是“image/bmp,image/gif,image/jpg”@用户:使用我的上一个建议(在
/,*/
上拆分)以后不要再添加空格,只需执行:“image/bmp,image/gif,image/jpg”而不是“image/bmp,image/gif,image/jpg”
>> ", image/bmp, image/gif, image/jpg".split(/\s*,\s*/).select{|x| x!=""}
=> ["image/bmp", "image/gif", "image/jpg"]
>> ", image/bmp, image/gif, image/jpg".split(/\s*,\s*/).select{|x| x!=""}
=> ["image/bmp", "image/gif", "image/jpg"]