Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

310
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda