ruby全局变量美元符号分号($;)正则表达式等价物

时间:2011-09-08 14:29:21

标签: ruby split string

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

我尝试了split(/,?\s+/),但也开始使用""

使用split($;)没有。我正在寻找的是说split(/,?$;/)有没有办法保留默认功能并只添加它?

(p.s我知道我可以做这个分裂[1 ..- 1],有很多方法可以用红宝石做事。)

更新

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

  • 同样,$;来自Perl或awk,称为SUBSEP,并进一步解释为什么开头被$;剥离了Why is split(' ') trying to be (too) smart?

2 个答案:

答案 0 :(得分:3)

在这种情况下,你不能避免split()在开头或结尾返回一些空元素吗?

尝试拒绝数组中的空字符串:

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

答案 1 :(得分:-1)

使用split你可以做到

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

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