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

121
Visualizações
¿La forma más fácil de aislar palabras que comienzan con símbolos específicos de cadenas en JS?

Digamos que tengo una cadena Hey @eli check out this link: https://stackoverflow.com

Idealmente, quiero convertir esto en una matriz como [{type: 'text', content: 'Hey '}, {type: 'mention', content: '@eli'}, {type: 'text', content: ' check out this link: '}, {type: 'href', content: 'https://stackoverflow.com'}] para que pueda agregar estilos o envolver ciertas cadenas de texto.

Actualmente estoy haciendo esto con una serie de .split()s, pero se siente algo complejo. ¿Existe una manera más fácil de aislar/dividir una cadena, en función de los caracteres/cadenas finales?

Solución actual para #s y @s:

 const valueAsArray = [] value.split(/\r?\n/).forEach((line) => { if (line) { const line_: Line[] = []; line.split(' ').forEach((space, i) => { space.split('@').forEach((mention, i) => { if (i === 0) { mention.split('#').forEach((hashtag, i) => { if (i === 0) { line_.push({ type: 'text', content: hashtag }); } else { line_.push({ type: 'hashtag', content: `#${hashtag}` }); } }); } else { line_.push({ type: 'mention', content: `@${mention}` }); } }); line_.push({ type: 'text', content: ' ' }); }); valueAsArray.push({ type: 'line', content: line_ }); } else { valueAsArray.push({ type: 'spacer' }); } });
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Simplemente usaría expresiones regulares para toda la búsqueda de palabras clave, usando la tubería o | separando las diferentes palabras clave

 const keys = /([@#]\S+|https\S+)/gi

@ o # + cadena de caracteres
tecla ^

https + cadena de caracteres
^ otra clave

Y luego terminarías con una matriz como esta:

  1. 'Ey '
  2. '@eli'
  3. 'echa un vistazo a este enlace:'
  4. 'https://stackoverflow.com'
  5. '' << cadena vacía
    y luego puede verificar cada elemento en la matriz para ver si hay cosas diferentes
 const valueAsArray = []; value.split(keys).forEach(item => { if (item[0] == '@' || item[0] == '#'){ valueAsArray.push({ type: 'mention', content: item }); } else if (item.includes('https')){ valueAsArray.push({ type: 'href', content: item }); } else { valueAsArray.push({ type: 'text', content: item }); } });

Tal vez haya una manera más eficiente, pero pensé que esta probablemente sería la más flexible en su caso. Espero que esto ayude

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