глобальная переменная ruby ​​знак доллара точка с запятой ($;) регулярное выражение - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть строка "\nbed.bed_id,\nbed.bed_label,\nbed.room_id,\nbed.pool_bed, nbed.record_state\n", и мне нужно разделить ее на пробелы и запятые.

Я пробовал split(/,?\s+/), который работает, но также оставляет "" в начале.

Использование split($;) не.То, что я ищу, это сказать split(/,?$;/) есть ли способ сохранить функциональность по умолчанию и просто добавить к ней?

(ps Я знаю, что могу сделать это разделение [1 ..- 1], существует множество способов сделать что-то в ruby).

update :

  • Моя проблема была с $; Я не был точно уверен, что это было, и думал, что это имеет особое значение, потому что как переменная irb>$; #=> nil.Теперь, возможно, я пропустил это, или что документация была обновлена, но ruby-doc.org говорит: «Если шаблон пропущен, используется значение $; Если $; равен нулю (который используется по умолчанию),str разделяется на пробел, как если бы `'было указано."

  • Также, $; от Perl или awk, известного как SUBSEP, и дальнейшее объяснение того, почемуначало убирается с $; здесь Почему сплит ('') пытается быть (слишком) умным?

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

В этом случае нельзя избежать, чтобы split () возвращала некоторые пустые элементы в начале или в конце?

Попробуйте отклонить пустые строки из массива:

string.split(/,?\s+/).reject &:empty?
0 голосов
/ 08 сентября 2011

С помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...