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

116
Visualizações
Comparar 2 plantillas de cadenas

Digamos que tengo 3 plantillas de cadena:

 A = ` Table <name> { <attribute-name> <data-type> } ` B = ` Table User { name varchar } ` C = ` Table Price { name } `

Aquí, A es la plantilla. Y quiero que B y C tengan el mismo formato que A . En el ejemplo, C no coincide, por lo que arrojará un error. Mientras que B coincide.

Y quiero que los marcadores de posición <name> o <data-type> se asignen a sus valores de acuerdo con B . Aquí, <name> debe ser "User" y <attribute-name> debe ser "name" y <data-type> debe ser "varchar".

Puedo hacer una búsqueda lineal y comparar las cadenas, pero ¿hay algún enfoque elegante para esto? o una biblioteca de javascript?

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

0

Probablemente haya un enfoque aún más limpio, pero creo que una expresión regular aquí puede ayudarlo.

Aquí hay uno simple para que coincida con sus tres marcadores de posición: /^Table (\w*) {\n(\w*) (\w*)\n}/gm

 B = ` Table User { name varchar } ` C = ` Table Price { name } ` function parseTemplate(str) { var regex = /^Table (\w*) {\n(\w*) (\w*)\n}/gm var matches = regex.exec(str); if (matches && matches.length == 4) { return { name: matches[1], 'attribute-name': matches[2], 'data-type': matches[3] }; } else return null; } console.log(parseTemplate(B)); console.log(parseTemplate(C));

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede convertir la plantilla en una expresión regular reemplazando los marcadores de posición <...> con grupos con nombre y luego comparar sus resultados con ellos (suponiendo que cada marcador de posición sea equivalente a \w+ ):

 function tpl2re(tpl) { return new RegExp(tpl.replace( /<(.+?)>/g, ($0, $1) => '(?<' + $1.replace(/\W/g, '_') + '>\\w+)' )) } A = ` Table <name> { <attribute-name> <data-type> } ` B = ` Table User { name varchar } ` C = ` Table Price { name } ` re = tpl2re(A) m = B.match(re); console.log(m && m.groups) m = C.match(re); console.log(m && m.groups)

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