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

311
Views
Acorte el texto después de 50 caracteres, pero solo después de la palabra actual

Necesito acortar el texto después de 50 caracteres, pero si el carácter 50 está en el medio de una palabra, corte solo después de la palabra y no antes.

texto de ejemplo: contrariamente a la creencia popular, Lorem Ipsum no es simplemente texto (59 caracteres)

resultado esperado: contrariamente a la creencia popular, Lorem Ipsum no es simplemente (54 caracteres)

Estaba intentando esto: text.substr(0,50).lastIndexOf(' ')); - no es bueno para mí porque corta el "simplemente" y quiero que simplemente esté en el texto más corto. ¡Gracias por la ayuda!

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

0

Si la longitud de la frase es inferior al límite, devuelve la frase; de lo contrario, ajuste el índice de corte al límite y explore hasta que encuentre un límite de palabra y corte la frase.

 const clip = (phrase, limit) => { if (phrase.length <= limit) return phrase; let sliceIndex = limit; while (sliceIndex < phrase.length && /\b/.test(phrase[sliceIndex])) sliceIndex++; return phrase.slice(0, sliceIndex); }; const input = "Contrary to popular belief, Lorem Ipsum is not simply text"; const expected = "Contrary to popular belief, Lorem Ipsum is not simply"; const actual = clip(input, 50); console.log(actual === expected); // true

about 4 years ago · Juan Pablo Isaza Report

0

Estuvo cerca con la subcadena & indexOf. Si busca un espacio después de los primeros 50 caracteres, funcionará. Luego, hay un caso extremo en el que la cadena tiene más de 50 caracteres y no tiene espacio.

 const shortener = (str) => { const offset = str.substring(50).indexOf(' '); return offset !== -1 ? str.substring(0,50 + offset) + '...' : str.length > 50 ? str + '...' : str; }
about 4 years ago · Juan Pablo Isaza Report

0

La expresión regular puede ayudarte con eso.
La idea es encontrar al menos 50 símbolos que terminen con límite de palabra \b

 let text = 'Contrary to popular belief, Lorem Ipsum is not simply text'; let shortetedText = text.match(/.{50,}?(?=\b)/)[0]; console.log(shortetedText);

UPD:
Si desea crear una función que acorte su texto si tiene más de 50 símbolos, podemos crear una función que lo haga en su lugar.

 let short = text => text.length > 50 ? text.match(/.{50,}?(?=\b)/)[0]: text;

Entonces solo úsalo así:

 let longText = 'Contrary to popular belief, Lorem Ipsum is not simply text'; let shortText = 'Lorem ipsum'; console.log(short(longText)); //will shorten text console.log(short(shortText)); //will leave text as it is bcoz it's shorter than 50 symbols
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!