Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
split a string in javascript based on start and end delimiters

I'm looking for a way in Javascript to split a string into an array based on "starting" and "ending" separators rather than one separator, as str.split currently does.

For example, if I have this string:

const str = '{lang}_{cmp_abbrev}_{cmp_type}_{pl_abbrev}_{w}x{h}_d{dv}c{cv}'

The result of:

str.mySplit('{', '}');

would be this:

[
    '{lang}',
    '_',
    '{cmp_abbrev}',
    '_',
    '{cmp_type}',
    '_',
    '{pl_abbrev}',
    '_',
    '{w}',
    'x',
    '{h}',
    '_d',
    '{dv}',
    'c',
    '{cv}'
]

Thus, it would take into consideration 2 characters instead of one character when determining how the string split should occur.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Regex to the rescue!

const str = '{lang}_{cmp_abbrev}_{cmp_type}_{pl_abbrev}_{w}x{h}_d{dv}c{cv}'
const values = [...str.matchAll(/\w+|\{\w+\}/g)].flat()

console.log(values)

about 4 years ago · Juan Pablo Isaza Relatório

0

Array#split can take regular expressions with capturing groups:

'foo{bar}baz{}!'.split(/(\{.*?\})/g)
//=> ['foo', '{bar}', 'baz', '{}', '!']

Just be aware that empty strings can be generated e.g.,

'{foo}bar{baz}'.split(/(\{.*?\})/g)
//=> ['', '{foo}', 'bar', '{baz}', '']

'{foo}{bar}{baz}'.split(/(\{.*?\})/g)
//=> ['', '{foo}', '', '{bar}', '', '{baz}', '']

But that is both normal and to be expected. If these are undesirable you can filter them out:

'{foo}{bar}{baz}'.split(/(\{.*?\})/g).filter(Boolean)
//=> ['{foo}', '{bar}', '{baz}']

With your initial string we have:

'{lang}_{cmp_abbrev}_{cmp_type}_{pl_abbrev}_{w}x{h}_d{dv}c{cv}'.split(/(\{.*?\})/g).filter(Boolean)
//=> ['{lang}', '_', '{cmp_abbrev}', '_', '{cmp_type}', '_', '{pl_abbrev}', '_', '{w}', 'x', '{h}', '_d', '{dv}', 'c', '{cv}']
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda