Ответ 1
Для примера, который вы дали:
str.gsub(/\s+/m, ' ').strip.split(" ")
он возвращает:
["aa", "bbb", "cc", "dd", "ee"]
Значение кода:
/\s+/m
- более сложная часть. \s
означает пробел, поэтому \s+
означает одну или несколько пробелов. В части /m
, m
называется модификатором, в этом случае это означает, что многострочный, то есть посещение многих строк, а не только одного, которое является поведением по умолчанию.
Таким образом, /\s+/m
означает поиск последовательностей одного или нескольких пробелов.
gsub
означает замену всех.
strip
является эквивалентом trim
на других языках и удаляет пробелы из фронта и конца строки.
Как, я писал объяснение, это может быть так, когда вы заканчиваете и заканчиваете символ конца или начала строки.
Чтобы быть в безопасности
Код может быть записан как:
str.gsub(/\s+/m, ' ').gsub(/^\s+|\s+$/m, '').split(" ")
Итак, если у вас есть:
str = "\n aa bbb\n cc dd ee\n\n"
Затем вы получите:
["aa", "bbb", "cc", "dd", "ee"]
Значение нового кода:
^\s+
последовательность белых пробелов в начале строки
\s+$
последовательность белых пробелов в конце строки
So gsub(/^\s+|\s+$/m, '')
означает удаление любой последовательности белого пробела в начале строки и в конце строки.