Если я попробую
"my, tags are, in here".split(" ,")
Я получаю следующее
[ 'my, tags are, in here' ]
В то время как я хочу
['my', 'tags', 'are', 'in', 'here']
Если я попробую
"my, tags are, in here".split(" ,")
Я получаю следующее
[ 'my, tags are, in here' ]
В то время как я хочу
['my', 'tags', 'are', 'in', 'here']
String.split
также может принимать регулярное выражение:
input.split(/[ ,]+/);
Это конкретное регулярное выражение расщепляется на последовательность из одной или нескольких запятых или пробелов, так что, например, несколько последовательных пробелов или последовательность запятой + пробел не дают пустых элементов в результатах.
Рекомендуется использовать .split(/[ ,]+/)
, но с естественными предложениями рано или поздно вы получите пустые элементы в массиве. например ['foo', '', 'bar']
.
Это нормально, если это подходит для вашего случая использования. Но если вы хотите избавиться от пустых элементов, вы можете сделать:
var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
"my, tags are, in here".split(/[ ,]+/)
результат:
["my", "tags", "are", "in", "here"]
вы можете использовать регулярное выражение, чтобы уловить любую длину пробела, и это будет выглядеть так:
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"
input.split(/\s*[\s,]\s*/)
... \s*
соответствует нулю или более символам пробела (а не только пробелам, но также вкладкам и символам новой строки).
... [\s,]
соответствует одному символу пробела или одной запятой
Если вы хотите избежать пустых элементов ввода, таких как "foo,bar,,foobar"
, это сделает трюк:
input.split(/(\s*,?\s*)+/)
+
соответствует одному или нескольким из предшествующего символа или группы.
Edit:
Добавлено ?
после запятой, которая соответствует нулевой или одной запятой.
Изменить 2:
Выключает edit 1, была ошибкой. Починил это. Теперь для выражения нужно иметь по крайней мере одну запятую или одно пространство.
Когда я хочу учитывать дополнительные символы, такие как запятые (в моем случае каждый токен может быть введен с кавычками), я бы сделал string.replace(), чтобы изменить другие разделители на пробелы, а затем разделить на пробелы.