Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
Subcadenas o métodos divididos en javascript

Tengo un problema simple con el que creo que necesito ayuda. Entonces, tengo una función que acepta una cadena en este formato

"1. Crowe, Velvet (LoC), 2. Hume, Eleanor (Ext), 4. Shigure, Rokurou (DmN), 10. Mayvin, Magilou (MgC)" sin las comillas.

Básicamente, una lista de nombres de personas con número de rango.

Lo que quiero es dividirlos de manera que obtenga el resultado ff:

 [ "1. Crowe, Velvet (LoC)", "2. Hume, Eleanor (Ext)", "4. Shigure, Rokurou (DmN)", "10. Mayvin, Magilou (MgC)" ]

¿Hay una manera de hacer eso? Usé el método split() pero divide la cadena cada vez que ve una coma.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Podrías dividir usando una expresión regular /(?<=\)),\s/ :

 const str = "1. Crowe, Velvet (LoC), 2. Hume, Eleanor (Ext), 4. Shigure, Rokurou (DmN), 10. Mayvin, Magilou (MgC)"; const res = str.split(/(?<=\)),\s/); console.log(res);

Esto se dividirá en ), como lo sugiere cmgchess en los comentarios. El problema con la división basada en una cadena es que elimina algunos de los caracteres que desea conservar. En su lugar, mediante el uso de una expresión regular, puede usar (?<=\)) (aquí ?<= se llama una búsqueda positiva detrás ) para hacer coincidir y mantener el ) en el elemento dividido resultante. El ,\s luego se divide en base a una coma seguida de un espacio ( \s ).

También puede usar la siguiente expresión regular con .match() que es un poco más robusta, pero es posible que deba actualizarse según el texto que puede aparecer después de su número/rango:

 /\d+\.\s\w+,\s\w+\s\(\w+\)/g

Lo anterior realiza:

  • \d+\. : Coincidirá con uno o más ( + ) dígitos seguidos de un punto
  • \s : coincide con un carácter de espacio en blanco
  • \w+, : Coincide con uno o más ( + ) caracteres de palabra ( \w ) seguidos de una coma ,
  • \s : Coincide con un espacio
  • \(\w+\) : Coincidencia de caracteres de palabras entre paréntesis ( )
  • /g : indicador global para hacer coincidir las secuencias de todas las apariciones en la cadena

 const str = "1. Crowe, Velvet (LoC), 2. Hume, Eleanor (Ext), 4. Shigure, Rokurou (DmN), 10. Mayvin, Magilou (MgC)"; const res = str.match(/\d+\.\s\w+,\s\w+\s\(\w+\)/g); console.log(res);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Solo una pequeña mejora de la respuesta de @cmgchess (agregue el método de trim para eliminar espacios innecesarios):

 const getUsers = (str) => { const users = str.split('),').map(x => x.trim() + ')'); users[users.length - 1] = users[users.length - 1].replace('))', ')'); return users; } console.log(getUsers("1. Crowe, Velvet (LoC), 2. Hume, Eleanor (Ext), 4. Shigure, Rokurou (DmN), 10. Mayvin, Magilou (MgC)"));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda