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

126
Views
Dividir una cadena como "__f__g_f_" Javascript

Digamos que tengo una cadena __f__g_f_

¿Cómo puedo lograr dividirlo en una matriz como ['__','f','__','g','_','f','_']

almost 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Esto debería hacer:

 const str = '__f__g_f_'

const parts = str.split(/([az]+)/)

console.log(parts)

almost 4 years ago · Santiago Trujillo Report

0

En lugar de usar .split() , puede usar .match() con un grupo coincidente en la expresión regular, le dará una matriz de todas sus coincidencias deseadas.

 const str = '__f__g_f_'
const parts = str.match(/(_+)|([az]+)/g)
console.log(parts);
 [
 "__",
 "f",
 "__",
 "g",
 "_",
 "f",
 "_"
]

almost 4 years ago · Santiago Trujillo Report

0

La división funciona con una complejidad de tiempo O(N) para que pueda escribir su propia implementación y sea más legible y fácil de mantener

 const s = "__f__g_f_"
const array = []

let buffer = ""
for (let i = 0; i < s.length; i++) {

 if (s[i] === "_") {
 buffer += s[i]
 continue
 }

 if (buffer.length > 0) {
 array.push(buffer)
 buffer = ""
 }
 array.push(s[i])
}
if (buffer.length > 0) {
 array.push(buffer)
}
console.log(array)

Editar:

(/([az]+)/) es elegante pero siempre estará en la piel de otros devops. ¿Qué significa (/([az]+)/) de un vuezo? Regex es como un programa compilado, código de máquina. a menos que todos los devops sean expertos en expresiones regulares, no están autodocumentados. Requieren ser comentados. Y puede haber errores en ellos, ¿cómo puedes confiar en /([az]+)/ si realmente funciona sin ejecutar el código? Ver código legible por humanos siempre es preferible. Y finalmente, puede que se sorprenda de que las expresiones regulares pueden tener una complejidad de tiempo extraña, a veces saltan a exponencial. No sabes cómo se implementan. Aquí, una implementación simple, simple y legible es 100% más rápida que la expresión regular.

 console.time('regex');
for (let i = 0; i < 100_000_000; i++) {
 const str = '__f__g_f_'
 const parts = str.split(/([az]+)/)
}
console.timeEnd("regex")


console.time('plain_fast');

for (let i = 0; i < 100_000_000; i++) {
 const s = "__f__g_f_"
 const array = []

 let buffer = ""
 for (let i = 0; i < s.length; i++) {

 if (s[i] === "_") {
 buffer += s[i]
 continue
 }

 if (buffer.length > 0) {
 array.push(buffer)
 buffer = ""
 }
 array.push(s[i])
 }
 if (buffer.length > 0) {
 array.push(buffer)
 }
}
console.timeEnd("plain_fast")

 regex: 10540.700ms
plain_fast: 4556.500ms
almost 4 years ago · Santiago Trujillo 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!