No obtuve una expresión regular optimizada que me dividió una cadena basada en la primera aparición de espacio en blanco:
var str="72 tocirah sneab";
Necesito conseguir:
[
"72",
"tocirah sneab",
]
javascript
regex
Luca
fuente
fuente
Respuestas:
Si solo te importa el carácter de espacio (y no las pestañas u otros caracteres de espacio en blanco) y solo te importa todo antes del primer espacio y todo después del primer espacio, puedes hacerlo sin una expresión regular como esta:
Tenga en cuenta que si no hay espacio, la primera línea devolverá una cadena vacía y la segunda línea devolverá toda la cadena. Asegúrese de que ese sea el comportamiento que desea en esa situación (o que esa situación no surja).
fuente
Javascript no soporta lookbehinds, así
split
que no es posiblematch
trabajos:Otro truco:
qué tal si:
y por qué no
o tal vez
Actualización de 2019 : a partir de ES2018, se admiten lookbehinds:
fuente
str.match(/^(\S+)\s(.*)/).slice(1)
no funcionará para una cadena que no tiene espacioEn ES6 también puedes
fuente
Al final del juego, lo sé, pero parece que hay una manera muy simple de hacer esto:
Esto saldrá
arr[0]
con"72"
yarr[1]
con"tocirah sneab"
. Tenga en cuenta que arr [2] estará vacío, pero puede ignorarlo.Para referencia:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
fuente
Pero todavía creo que hay una manera más rápida.
fuente
La solución de georg es buena, pero se rompe si la cadena no contiene ningún espacio en blanco. Si sus cadenas tienen la posibilidad de no contener espacios en blanco, es más seguro usar .split y capturar grupos de esta manera:
fuente
También puede usar .replace para reemplazar solo la primera aparición,
Dejando fuera el / g.
MANIFESTACIÓN
fuente
Simplemente divida la cadena en una matriz y pegue las partes que necesita juntas. Este enfoque es muy flexible, funciona en muchas situaciones y es fácil razonar. Además, solo necesita una llamada de función.
Alternativamente, si desea seleccionar lo que necesita directamente de la cadena, puede hacer algo como esto:
O así:
Sin embargo, sugiero el primer ejemplo.
Demostración de trabajo: jsbin
fuente
Siempre que necesito obtener una clase de una lista de clases o una parte de un nombre o id de clase, siempre uso split () y luego lo obtengo específicamente con el índice de matriz o, más a menudo en mi caso, pop () para obtener el último elemento o shift () para obtener el primero.
Este ejemplo obtiene las clases del div "gallery_148 ui-sortable" y devuelve el id de la galería 148.
Estoy seguro de que podría compactarse en menos líneas, pero lo dejé expandido para facilitar la lectura.
fuente
Necesitaba un resultado ligeramente diferente.
Quería la primera palabra, y lo que vino después, incluso si estaba en blanco.
así que si la entrada se
oneword
obtieneoneword
y''
.Si la entrada es
one word and some more
usted obtieneone
yword and some more
.fuente
No estoy seguro de por qué todas las otras respuestas son tan complicadas, cuando puedes hacerlo todo en una línea, manejando la falta de espacio también.
Como ejemplo, obtengamos los primeros y "otros" componentes de un nombre:
fuente
La siguiente función siempre dividirá la oración en 2 elementos. El primer elemento contendrá solo la primera palabra y el segundo elemento contendrá todas las otras palabras (o será una cadena vacía).
fuente