Рубин разделен запятой, поглощающей конечное пространство

Мне нужно разбить строку на две переменные. Например, следующее будет работать нормально:

first,second = "red,blue".split(',')

Я хотел бы разделить пользовательский ввод, который может иметь дополнительное пространство после запятой. Как написать его так, чтобы пространство после запятой было поглощено? Мне нужно правильно обрабатывать все эти возможности:

"red,blue"        # first="red" second="blue"
"red, blue"       # first="red" second="blue"
"red,dark blue"   # first="red" second="dark blue"
"red, light blue" # first="red" second="light blue"

Ответ 1

Просто обрезайте результирующие записи. То, как вы это делаете, зависит от того, хотите ли вы поддерживать ровно одно место после запятой или хотите удалить все ведущие пробелы (и, возможно, задние пробелы). Если ваша цель - получить слова, как это выглядит в вашем примере, вы должны просто удалить все окружающие пробелы.

first,second = "red, blue".split(',').map(&:strip)

Ответ 2

В коде отсутствует регулярное выражение - вы разделяете строку, что имеет значение. "red,blue".split(/\s*,\s*/) должен работать так, как вы ожидаете.