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

238
Views
Extraer valores como variables de marcador de posición en JavaScript

Este es el problema opuesto al reemplazo eficiente de cadenas de JavaScript . Esa solución cubre la inserción de datos en marcadores de posición, mientras que esta pregunta cubre la coincidencia de cadenas y la extracción de datos de marcadores de posición.

Tengo un problema para entender cómo hacer lo siguiente en ES6 JavaScript.

Estoy tratando de encontrar una manera de hacer coincidir cadenas con marcadores de posición y extraer el contenido de los marcadores de posición como propiedades de un objeto. Tal vez un ejemplo ayude.

Dado el patrón:

my name is {name} and I live in {country}

Coincidirá con la cadena:

my name is Mark and I live in England

Y proporciona un objeto:

 { name: "Mark", country: "England" }

El objetivo es tomar una cadena y compararla con una serie de patrones hasta que obtenga una coincidencia y luego tenga acceso a los valores del marcador de posición.

¿Puede alguien señalarme en la dirección correcta...

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Me sorprendería si se puede hacer con una expresión regular.

La forma en que lo pensaría es la siguiente:

  • Dividir la plantilla por { o }
  • iterar sobre las últimas partes de la plantilla (cada dos comenzando con el índice 1)
  • En cada iteración, obtenga la clave, su prefijo y sufijo (o el siguiente prefijo)
  • Luego podemos calcular los índices de inicio y final para extraer el valor de la cadena con la ayuda de lo anterior.

 const extract = (template, str) => { const templateParts = template.split(/{|}/); const extracted = {}; for (let index = 1; index < templateParts.length; index += 2) { const possibleKey = templateParts[index], keyPrefix = templateParts[index - 1], nextPrefix = templateParts[index + 1]; const substringStartIndex = str.indexOf(keyPrefix) + keyPrefix.length; const substringEndIndex = nextPrefix ? str.indexOf(nextPrefix) : str.length; extracted[possibleKey] = str.substring(substringStartIndex, substringEndIndex); } return extracted; } console.log( extract('my name is {name} and I live in {country}', 'my name is Mark and I live in England') );

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar grupos de captura con nombre para ese problema, por ejemplo

 const string = "my name is Mark and I live in England"; const regEx = /name is\s(?<name>\w+?)\b.*?live in (?<country>\w+?)\b/i; const match = regEx.exec(string); console.log(match?.groups);

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!