Creé esta función a continuación para calcular cuando una cadena (nombre) alcanza más de 35 caracteres y luego se rompe una línea.
function getName(name) { let newName = name for (let i = 0; i < name.length; i += 1) { if (i % 35 === 0) { newName = `${newName.substr(0, i)}\n${newName.substr(i)}` } } return newName } console.log(getName("Please note that popular names below"))Por ejemplo, salida:
Name = "Please note that popular names below" function output: Please note that popular names bel owLo que quiero es que en lugar de romper una línea de estos dos últimos caracteres "ow", ponga "abajo" en la siguiente línea.
Si desea dividir una cadena a cierta longitud sin cortar ninguna palabra, el siguiente código puede ayudarlo:
const name = "YOUR_STRING"; const maxLen = 35; // you can play with this number to get desired result. let result = name.substr(0, maxLen); result = result.substr(0, Math.min(result.length, result.lastIndexOf(" ")));Entonces, desea encontrar el último espacio dentro de los primeros 35 caracteres y romper la línea allí, ¿verdad?
Primero puede dividir los primeros 35 caracteres y luego usar expresiones regulares para encontrar el último espacio.
Para dividir los primeros 35 caracteres, use name.substr(0,35) . Esto devuelve una nueva cadena con los primeros 35 caracteres.
Una expresión regular que coincide con el último espacio es, por ejemplo / (?!.* )/ , por lo que puede hacer replace(/ (?!.* )/, x) donde x es lo que quiera (nueva línea, en este caso) .
Supongo que puede realizar un seguimiento del último índice de espacio en blanco y luego, cuando llegue a 35, romper la línea en el índice de espacio en blanco
function getName(name) { let newName = name let wsIndex = 0 for (let i = 0; i < name.length; i += 1) { if (name.charAt(i) == ' ') wsIndex = i; if (i % 35 === 0) { newName = `${newName.substr(0, wsIndex)}\n${newName.substr(wsIndex+1)}` } } return newName }