开发者

Strange behavior splitting arrays with Ruby (v1.9.2)

I am trying to handle an array with Ruby v1.9.2 but it has some strange behavior.

The best explanation may be done with examples:


CASE 1 TEST

@test1 = "image/bmp, image/gif, image/jpg".split(',')

Debug @test1:

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

CASE 2 TEST

@test2 = ", image/bmp, image/gif, image/jpg".split(',')

Debug @test2:

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

WHAT I NEED

Notice: I can use the CASE 2 TEST, but I would like to do things right and better.

Debug that I would like to have:

--- 
- " image/bmp"
- " ima开发者_C百科ge/gif"
- " image/jpg"


In the test case 1 there is no space before "image/bmp" in the result because there is no space before "image/bmp" in the original string.

In the test case 2 there is an empty string at the beginning because the string starts with a comma, and for every separator in the string there is a string in the resulting array, containing what comes before that separator (which in this case means the empty string).

If you want the result you've shown, you could just add a space (but no comma) before "image/bmp" in the source string. Alternatively you could split by /, */ and then add one space before each string with map. Though frankly I don't get why you want a space before each string.


>> ", image/bmp, image/gif, image/jpg".split(/\s*,\s*/).select{|x| x!=""}
=> ["image/bmp", "image/gif", "image/jpg"]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜