split
преобразует строку в массив подстрок в новом массиве.Например -
"ab cd".split(" ")
результат: ["ab", "cd"]
разбивается там, где есть пробел " "
.но если пробела не будет, будет создан массив, содержащий основную строку.Например -
"abcd".split(" ")
результат: ["abcd"]
Теперь перейдем к части регулярного выражения.
\s
используется для поиска символа пробела.
'ab '.split(/\s/)
результаты ["ab", ""]
и 'ab'.split(/\s/)
результаты ["ab"]
Первая строка содержит один пробел, она разделяет строку на две подстроки, но вторая строка не содержит пробелов, поэтомуне создает подстроку.
n*
соответствует любой строке, которая содержит ноль или более вхождений n.
, поэтому \s*
соответствует любой строке, которая содержит ноль или более пробельных символов.
'ab '.split(/\s*/)
результаты ["a", "b", ""]
и 'ab'.split(/\s*/)
результаты ["a", "b"]
Поскольку первая строка содержит один пробел и один нулевой пробел (всего два), она разбивает строку на три подстроки.но Second String содержит только один нулевой пробел, поэтому он создает две подстроки.
Квантор n$
соответствует любой строке с n в конце.
, поэтому \s*$
соответствует строкелюбая строка, которая хотя бы один пробел.Поскольку он будет совпадать только в конце пробела, если пробелов нет, конца не будет.поэтому он не будет совпадать.
'ab '.split(/\s*$/)
результаты ["ab", ""]
и 'ab'.split(/\s*$/)
результаты ["ab"]
Поскольку первая строка содержит один пробел, она разбивает строку на две подстроки,но из-за отсутствия пробелов во второй строке, она не создаст подстроку.
Короче говоря, (/\s*$/)
шаблон ищет любой пробел в конце пробела.Когда вы используете split(/\s*$/)
, он будет разделяться только при совпадении шаблона.