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

136
Views
Dividir una cadena en dos, manteniendo las palabras intactas y devolviéndolas

Como dice el título, busco ver cómo puedo dividir una cadena en dos partes, manteniendo intactas las palabras completas y teniendo acceso a ambas partes con JavaScript. Estoy usando esta cadena en un archivo pug.

Por ejemplo, tengo una cadena muy larga

 let str = `hello i am a very long string that needs to be split into two different parts! thank you so much for helping.'

Quiero que los primeros 70 caracteres se usen como título y luego el resto para el cuerpo del elemento.

He usado esta expresión regular que encontré en una publicación anterior que me da los primeros 70+ caracteres, con palabras completas...

 str.replace(/^([\s\S]{70}[^\s]*)[\s\S]*/, "$1")

que hace lo que yo quiero que haga! Pero ahora necesito averiguar si hay una manera de obtener el resto de esa cadena.

 str1 = `hello i am a very long string that needs to be split into two different` str2 = `parts! thank you so much for helping.`

Nuevamente, usar esto en un archivo pug, así que si hay una respuesta simple, me encantaría. De lo contrario, supongo que podría escribir una función e importar el script a la vista pug.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

¿Qué le gustaría hacer cuando la división ocurre en un carácter de espacio en blanco? Decir; el espacio justo después de 'diferente'. Significaría que la parte anterior al espacio tiene 69 caracteres, pero 70 si incluye el espacio. Suponiendo que desea capturar la siguiente palabra por si acaso, intente utilizar la búsqueda retrospectiva de ancho cero de JS:

 (?<=^.{70}\S*)\s+

Ver una demostración en línea


  • (?<= - Mirar hacia atrás positivo abierto;
    • ^.{70} - 70 Caracteres justo después del ancla de la línea de inicio;
    • \S* - 0+ caracteres que no son espacios en blanco;
  • \s+ - Captura 1+ caracteres de espacio en blanco para dividir.

 const str = 'hello i am a very long string that needs to be split into two different parts! thank you so much for helping'; const result = str.split(/(?<=^.{70}(?:\S)*)\s+/); console.log(result);

about 4 years ago · Santiago Trujillo Report

0

Después de extraer la primera parte de la cadena usando su método, puede usar la longitud de str1 para determinar dónde comienza la segunda parte en str . Desde allí puede usar substring para extraerlo.

 let str = `hello i am a very long string that needs to be split into two different parts! thank you so much for helping.`; let str1 = str.replace(/^([\s\S]{70}[^\s]*)[\s\S]*/, "$1"); let str2 = str.substring(str1.length).trimStart();

Con trimStart puede eliminar cualquier espacio en blanco que aparezca al comienzo de str2 .

about 4 years ago · Santiago Trujillo Report

0

Una solución alternativa a la anterior, pero usando solo regex sería la siguiente:

 let listStrings = str.split(/^([\s\S]{70}[^\s]*)[\s\S](.*)/)).filter(Boolean)

Agregué a su expresión regular la última parte (.*) para obtener el resto de la cadena como otro grupo. Luego, utilizando la función de split de cadenas de javascript, puede aplicar la expresión regular y obtener una lista de cadenas, siendo esos los grupos obtenidos por la expresión regular.

El .filter(Boolean) se usa para eliminar las cadenas vacías obtenidas en la respuesta:

 0:"" 1:"hello i am a very long string that needs to be split into two different" 2:"parts! thank you so much for helping." 3:""
about 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!