Я импортирую данные из старых таблиц в базу данных с использованием рельсов.Подавить разделители в строке Ruby # split
У меня есть один столбец, который содержит список на каждой строке, что иногда отформатированный в
first, second
и другие времена, как этот
third and fourth
Так что я хотел бы разделить эту строку в массив, ограничивающий запятую или слово «и». Я попытался
my_string.split /\s?(\,|and)\s?/
К сожалению, как говорят документы:
Если шаблон содержит группы, соответствующие матчи будут возвращены в массиве, а также.
Это означает, что я получаю обратно массив, который выглядит как
[
[0] "first"
[1] ", "
[2] "second"
]
Очевидно только нулевой и второй элементы полезны для меня. Что вы рекомендуете как самый лучший способ добиться того, что я пытаюсь сделать?
Используйте '(?: ...)' для группировки без захвата. – Stefan
Вы также можете просто удалить оскорбительные разделители 'mystring.gsub (/ (, | и) /, '') .split'. – ptd
@ptd Тогда не было бы возможности рассказать разницу между разделительными элементами. Почему бы не заменить запятую и разделитель запятой, а затем запустить раскол? – nikkon226