Если я попробую
"my, tags are, in here".split(" ,")
Я получаю следующее
[ 'my, tags are, in here' ]
А я хочу
['my', 'tags', 'are', 'in', 'here']
javascript
Хоа
источник
источник
"my, tags are, in here".split(" ,")
разделит строку только там, где пробел, за которым следует запятая, является разделителем. Ваша строка не содержит этой последовательности, поэтому она не разбита."my, tags are, in here".split(", ")
с замененной последовательностью разбиения, ваша исходная строка будет как минимум разделена на три части после каждой запятой и пробела. Если вам нужно пять частей, в приведенных ниже ответах строка соответствия указывается в виде регулярного выражения, соответствующего пробелу или запятой.Ответы:
String.split
также может принимать регулярное выражение:Это конкретное регулярное выражение разбивается на последовательность из одной или нескольких запятых или пробелов, так что, например, несколько последовательных пробелов или последовательность запятая + пробел не приводят к появлению пустых элементов в результатах.
источник
/,?\s+/
?spaces , before commas
.\s
. У меня могут быть разрывы строк в BLOB-объекте, и я\s
тоже позабочусь о них.input.split("/[ ,]+/)"
. Оставьте цитаты (input.split(//)
вместоinput.split("//")
), и вы получите гораздо лучший опыт. Потому что, как ни странно, это действительно, вероятно, будет работать только само по себе (для генерации["input.split(\"", ")\""]
).Предложение использовать
.split(/[ ,]+/)
хорошо, но с естественными предложениями рано или поздно вы получите пустые элементы в массиве. напр['foo', '', 'bar']
.Что нормально, если это подходит для вашего варианта использования. Но если вы хотите избавиться от пустых элементов, вы можете:
источник
Boolean()
конструктор вызывается для любого значения, он преобразует это значение в логическое значение - истина или ложь. Таким образом, любые ложные значения будут отфильтрованы из массива, включая пустые строки.[1, 2, 3].map(String)
"foo, bar,,foobar,".split(/[\s,]+/)
возвращается["foo", "bar", "foobar", ""]
(из-за запятой в конце), спасибо!вы можете использовать регулярное выражение, чтобы поймать любую длину пробела, и это будет примерно так:
источник
/\s+/
. Например,'a b c '.split(/\s+/) === [ 'a', 'b', 'c', '' ]
. Если вы.trim()
сначала натянете струну, все будет хорошо.результат:
источник
input.split(/\s*[\s,]\s*/)
…
\s*
Соответствует нулю или более пробелов (не только пробелов, но также табуляции и новой строки)....
[\s,]
соответствует одному символу пробела или одной запятойЕсли вы хотите избежать пустых элементов из ввода, например
"foo,bar,,foobar"
, это поможет:input.split(/(\s*,?\s*)+/)
Соответствует
+
одному или нескольким предыдущим символам или группам.Редактировать:
Добавляется
?
после запятой, которая соответствует нулю или одной запятой.Изменить 2:
Оказывается, редактирование 1 было ошибкой. Починил это. Теперь должна быть хотя бы одна запятая или один пробел, чтобы выражение могло найти совпадение.
источник
"foo,bar,foobar".split(/[ ,]+/)
возвращается["foo", "bar", "foobar"]
.Когда я хочу учесть дополнительные символы, такие как ваши запятые (в моем случае каждый токен может быть введен в кавычки), я бы сделал string.replace (), чтобы изменить другие разделители на пробелы, а затем разделить их на пробелы.
источник
str_variable.replace(/[,'"]+/gi, ' ').split(' ')