我正在尝试使用Ruby v1.9.2处理数组,但它有一些奇怪的行为。
可以通过示例进行最佳解释:
案例1测试
@test1 = "image/bmp, image/gif, image/jpg".split(',')
Debug @ test1:
---
- image/bmp # why this?!
- " image/gif"
- " image/jpg"
案例2测试
@test2 = ", image/bmp, image/gif, image/jpg".split(',')
Debug @ test2:
---
- "" # why this?!
- " image/bmp"
- " image/gif"
- " image/jpg"
我需要什么
注意:我可以使用CASE 2 TEST,但我想做的事情做得更好。
我希望调试:
---
- " image/bmp"
- " image/gif"
- " image/jpg"
答案 0 :(得分:2)
在测试用例1中,结果中“image / bmp”之前没有空格,因为原始字符串中“image / bmp”之前没有空格。
在测试用例2中,开头有一个空字符串,因为字符串以逗号开头,对于字符串中的每个分隔符,结果数组中都有一个字符串,包含在该分隔符之前的字符串(在此处case表示空字符串)。
如果你想要显示的结果,你可以在源字符串中的“image / bmp”之前添加一个空格(但没有逗号)。或者,您可以按/, */
拆分,然后在每个字符串前面添加一个空格。虽然坦率地说我不明白为什么你想在每个字符串之前留一个空格。
答案 1 :(得分:1)
>> ", image/bmp, image/gif, image/jpg".split(/\s*,\s*/).select{|x| x!=""}
=> ["image/bmp", "image/gif", "image/jpg"]