Si lo intento
"my, tags are, in here".split(" ,")
Obtengo lo siguiente
[ 'my, tags are, in here' ]
Mientras que yo quiero
['my', 'tags', 'are', 'in', 'here']
javascript
Hoa
fuente
fuente
"my, tags are, in here".split(" ,")
dividirá la cadena solo donde un espacio seguido de una coma es el separador. Su cadena no contiene esa secuencia, por lo tanto, no está dividida."my, tags are, in here".split(", ")
con la secuencia de división intercambiada, al menos dividirá su cadena original en tres partes, después de cada coma y espacio. Si desea cinco partes, las respuestas a continuación especifican la cadena de coincidencia como una expresión regular que coincide con un espacio o una coma.Respuestas:
String.split
también puede aceptar una expresión regular:Esta expresión regular en particular se divide en una secuencia de una o más comas o espacios, de modo que, por ejemplo, múltiples espacios consecutivos o una secuencia de coma + espacio no producen elementos vacíos en los resultados.
fuente
/,?\s+/
?spaces , before commas
.\s
? Es posible que tenga algunos saltos de línea en el blob y también me\s
ocupe de ellos.input.split("/[ ,]+/)"
. Deje las citas fuera (eninput.split(//)
lugar deinput.split("//")
) y tendrá una experiencia mucho mejor. Porque, curiosamente, eso probablemente solo funcionaría en sí mismo (para generar["input.split(\"", ")\""]
).La sugerencia de uso
.split(/[ ,]+/)
es buena, pero con oraciones naturales tarde o temprano terminarás obteniendo elementos vacíos en la matriz. ej['foo', '', 'bar']
.Lo cual está bien si está bien para su caso de uso. Pero si desea deshacerse de los elementos vacíos, puede hacer:
fuente
Boolean()
constructor sobre cualquier valor, lo convierte en un valor booleano: verdadero o falso. Por lo tanto, los valores falsos se filtrarán de la matriz, incluidas las cadenas vacías.[1, 2, 3].map(String)
"foo, bar,,foobar,".split(/[\s,]+/)
devuelve["foo", "bar", "foobar", ""]
(debido a la coma que cuelga al final), ¡gracias!puede usar expresiones regulares para capturar cualquier longitud de espacio en blanco, y esto sería así:
fuente
/\s+/
. Por ejemplo'a b c '.split(/\s+/) === [ 'a', 'b', 'c', '' ]
,. Si.trim()
primero le das la cuerda, estarás bien.el resultado es :
fuente
input.split(/\s*[\s,]\s*/)
…
\s*
Coincide con cero o más caracteres de espacio en blanco (no solo espacios, sino también tabulaciones y nuevas líneas)....
[\s,]
coincide con un carácter de espacio en blanco o una comaSi desea evitar elementos en blanco de entrada como
"foo,bar,,foobar"
, esto hará el truco:input.split(/(\s*,?\s*)+/)
El
+
coincida con uno o más de los caracteres o grupo precedente.Editar:
Agregado
?
después de la coma que coincide con cero o una coma.Edición 2:
Resulta que la edición 1 fue un error. Arreglado. Ahora tiene que haber al menos una coma o un espacio para que la expresión encuentre una coincidencia.
fuente
"foo,bar,foobar".split(/[ ,]+/)
devuelve["foo", "bar", "foobar"]
también.Cuando quiero tener en cuenta caracteres adicionales como sus comas (en mi caso, cada token se puede ingresar con comillas), hago un string.replace () para cambiar los otros delimitadores a espacios en blanco y luego dividirlos en espacios en blanco.
fuente
str_variable.replace(/[,'"]+/gi, ' ').split(' ')