Как разбить строку JavaScript на пробел или запятую?

Если я попробую

"my, tags are, in here".split(" ,")

Я получаю следующее

[ 'my, tags are, in here' ]

В то время как я хочу

['my', 'tags', 'are', 'in', 'here']

Ответ 1

String.split также может принимать регулярное выражение:

input.split(/[ ,]+/);

Это конкретное регулярное выражение расщепляется на последовательность из одной или нескольких запятых или пробелов, так что, например, несколько последовательных пробелов или последовательность запятой + пробел не дают пустых элементов в результатах.

Ответ 2

Рекомендуется использовать .split(/[ ,]+/), но с естественными предложениями рано или поздно вы получите пустые элементы в массиве. например ['foo', '', 'bar'].

Это нормально, если это подходит для вашего случая использования. Но если вы хотите избавиться от пустых элементов, вы можете сделать:

var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);

Ответ 3

"my, tags are, in here".split(/[ ,]+/)

результат:

["my", "tags", "are", "in", "here"]

Ответ 4

вы можете использовать регулярное выражение, чтобы уловить любую длину пробела, и это будет выглядеть так:

     var text = "hoi how     are          you";
     var arr = text.split(/\s+/);

     console.log(arr) will result :
     ["hoi", "how", "are", "you"]

     console.log(arr[2]) will result :
     "are" 

Ответ 5

input.split(/\s*[\s,]\s*/)

... \s* соответствует нулю или более символам пробела (а не только пробелам, но также вкладкам и символам новой строки).

... [\s,] соответствует одному символу пробела или одной запятой

Если вы хотите избежать пустых элементов ввода, таких как "foo,bar,,foobar", это сделает трюк:

input.split(/(\s*,?\s*)+/)

+ соответствует одному или нескольким из предшествующего символа или группы.

Edit:

Добавлено ? после запятой, которая соответствует нулевой или одной запятой.

Изменить 2:

Выключает edit 1, была ошибкой. Починил это. Теперь для выражения нужно иметь по крайней мере одну запятую или одно пространство.

Ответ 6

Когда я хочу учитывать дополнительные символы, такие как запятые (в моем случае каждый токен может быть введен с кавычками), я бы сделал string.replace(), чтобы изменить другие разделители на пробелы, а затем разделить на пробелы.