Se eu tentar
"my, tags are, in here".split(" ,")
Eu entendo o seguinte
[ 'my, tags are, in here' ]
Considerando que eu quero
['my', 'tags', 'are', 'in', 'here']
javascript
Hoa
fonte
fonte
"my, tags are, in here".split(" ,")
irá dividir a string apenas onde um espaço seguido por uma vírgula for o separador. Sua string não contém essa sequência, portanto, não é dividida."my, tags are, in here".split(", ")
com a sequência de divisão trocada, irá pelo menos dividir sua string original em três partes, após cada vírgula e espaço. Se você quiser cinco partes, as respostas abaixo especificam a string de correspondência como uma expressão regular correspondendo a um espaço ou vírgula.Respostas:
String.split
também pode aceitar uma expressão regular:Esta regex particular se divide em uma sequência de uma ou mais vírgulas ou espaços, de modo que, por exemplo, vários espaços consecutivos ou uma sequência de vírgula + espaço não produzam elementos vazios nos resultados.
fonte
/,?\s+/
?spaces , before commas
.\s
. Posso ter algumas quebras de linha no blob e\s
cuido delas também.input.split("/[ ,]+/)"
. Deixe as aspas (eminput.split(//)
vez deinput.split("//")
) e você terá uma experiência muito melhor. Porque, estranhamente, isso provavelmente só funcionaria em si mesmo (para gerar["input.split(\"", ")\""]
).A sugestão de uso
.split(/[ ,]+/)
é boa, mas com frases naturais, mais cedo ou mais tarde, você acabará obtendo elementos vazios no array. por exemplo['foo', '', 'bar']
.O que é bom se estiver bom para o seu caso de uso. Mas se você quiser se livrar dos elementos vazios, pode fazer:
fonte
Boolean()
construtor é chamado em qualquer valor, ele converte esse valor em um booleano - verdadeiro ou falso. Portanto, quaisquer valores falsos serão filtrados do array, incluindo strings vazias.[1, 2, 3].map(String)
"foo, bar,,foobar,".split(/[\s,]+/)
retorna["foo", "bar", "foobar", ""]
(por causa da vírgula pendente no final), obrigado!você pode usar regex para capturar qualquer comprimento de espaço em branco, e isso seria assim:
fonte
/\s+/
. Por exemplo'a b c '.split(/\s+/) === [ 'a', 'b', 'c', '' ]
,. Se você.trim()
colocar a corda primeiro, você será bom.o resultado é :
fonte
input.split(/\s*[\s,]\s*/)
…
\s*
Corresponde a zero ou mais caracteres de espaço em branco (não apenas espaços, mas também tabulações e novas linhas)....
[\s,]
corresponde a um caractere de espaço em branco ou uma vírgulaSe você quiser evitar elementos em branco de entrada como
"foo,bar,,foobar"
, isso fará o truque:input.split(/(\s*,?\s*)+/)
o
+
corresponde a um ou mais dos caracteres ou grupos anteriores.Editar:
Adicionado
?
após a vírgula que corresponde a zero ou uma vírgula.Editar 2:
Acontece que a edição 1 foi um erro. Corrigido. Agora deve haver pelo menos uma vírgula ou um espaço para que a expressão encontre uma correspondência.
fonte
"foo,bar,foobar".split(/[ ,]+/)
retorna["foo", "bar", "foobar"]
também.Quando eu quiser levar em consideração caracteres extras como suas vírgulas (no meu caso, cada token pode ser inserido com aspas), eu faria um string.replace () para alterar os outros delimitadores para espaços em branco e depois dividir em espaços em branco.
fonte
str_variable.replace(/[,'"]+/gi, ' ').split(' ')