2011-09-08 76 views
2

我有一个字符串"\nbed.bed_id,\nbed.bed_label,\nbed.room_id,\nbed.pool_bed, nbed.record_state\n",我需要用空格和逗号分隔它。

我试过split(/,?\s+/)它的工作原理,但在开始时也留下了""。使用split($;)没有。我正在寻找的是说split(/,?$;/)是否有一种方法来保留默认功能,并添加到它?

(p.s我知道我可以做这个split [1 ..- 1],有很多方法可以在ruby中做事情)。

更新

  • 我的问题是与$;我不知道真正的这是什么,并认为它有特殊的意义,因为作为一个变量irb>$; #=> nil。现在可能是我错过了它,或者文档已经更新了,但是,ruby-doc.org说:“如果省略pattern,则使用$的值;如果$;为零(这是默认值), str被分割为空白,就好像''被指定了一样。“

  • 同时,$;是从Perl或awk中,被称为SUBSEP,并进一步解释为什么一开始是剥夺与$;在这里Why is split(' ') trying to be (too) smart?

回答

3

你无法避免分裂()在这种情况下在开始或结束时返回一些空元素?

尝试从阵列拒绝空字符串:

string.split(/,?\s+/).reject &:empty? 
+0

我喜欢使用椒盐脆饼操作符! “ – jtzero

+0

”在这种情况下,您无法避免split()在开始或结束时返回一些空元素?“,默认split在开始时不会返回空元素,而/ \ s +/does split()=> [“bed.bed_id”,“bed.bed_label”,“bed.room_id”,“bed.pool_bed”,“nbed.record_state”] split(/ \ s + /)=> [“”, “bed.bed_id”,“bed.bed_label”,“bed.room_id”,“bed.pool_bed”,“nbed.record_state”] – jtzero

-1

随着采用分体式u能做到这一点

STR =“\ nbed.bed_id,\ nbed.bed_label,\ nbed.room_id,\ nbed .pool_bed,nbed.record_state \ n“

st = str.split(/,?\s+/) 
st.shift 
st 
+0

...并且如果字符串不*以*你扔掉第一个元素的空间。 –