Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

221
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!