Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: yoelrodguez en 14 Febrero 2017, 18:15 pm



Título: Evitar que el substring me corte la palabra
Publicado por: yoelrodguez en 14 Febrero 2017, 18:15 pm
Hola a todos:

 Tengo la siguiente situación, tengo un párrafo el cual estoy cargando de forma dinámica.  En el cual se me están cortando las palabras al final. Quisiera saber si existe alguna forma ,que no se me corta la palabra sino que me corte la cadena en el ultimo espacio en blanco del string.

 La inserción de los texto lo estoy haciendo con jquery les dejo el código a continuación y el ejemplo de lo que esta sucediendo.

Código
  1. lon = Math.round(xa.length / 82);
  2. for(i= 0; i < lon ; i++){
  3. texto = '';
  4. //Extraemos los contenidos para formar el párrafo dinamico.
  5. if(i == 0){
  6. texto = xa.substr(0,82);
  7. $("#div"+i).addClass('txt-mitad2');
  8. $("#texto1").html(texto);
  9. }else{
  10. len = 82 * i;
  11. p = i - 1;
  12. texto = xa.substr(len,82);
  13. $("#div"+p).addClass('txt-mitad2');
  14. $( '<div class="row show-grid" id="div'+i+'"  style="margin-top: 10px"><div class="span10" >'+texto+'</div></div>' ).insertAfter( "#div"+p );
  15. }
  16. }

Texto con el error color rojo:

Citar
Es un hecho establecido hace demasiado tiempo que un lector se distraerá con el co
ntenido del texto de un sitio mientras que mira su diseño. El punto de usar Lorem
Ipsum es que tiene una distribución más o menos normal de las letras, al contrario
de usar textos como por ejemplo Contenido aquí, contenido aquí . Estos textos hac
en parecerlo un español que se puede leer. Muchos paquetes de autoedición y editor
es de páginas web usan el Lorem Ipsum como su texto por defecto, y al hacer una bú
squeda de Lorem Ipsum va a dar por resultado muchos sitios web que usan este texto
si se encuentran en estado de desarrollo. Muchas versiones han evolucionado a tra
vés de los años, algunas veces por accidente, otras veces a propósito (por ejemplo
insertándole humor y cosas por el estilo).
   


Título: Re: Evitar que el substring me corte la palabra
Publicado por: #!drvy en 14 Febrero 2017, 22:16 pm
Hola,

Lo suyo seria que compruebes si el caracter que vas a cortar es un espacio u otra cosa. Y en caso de ser otra cosa, vuelvas para atras hasta el ultimo espacio. Hay muchas funciones por ahi para hacer text wrap.

Por ejemplo:

Código
  1. function cortarTexto(texto, inicio=0, longitud){
  2.    var _trim = texto.substr(inicio, longitud);
  3.    return _trim.substr(0, Math.min(_trim.length, _trim.lastIndexOf(' ')));
  4. };
  5.  
  6. cortarTexto(texto, 0, 82);

O incluso con regex (esto te da un array con las lineas)

Código
  1. function cortarTexto(texto){
  2.    return texto.trim().match('/(\S(.{0,80}\S)?)\s+/g');
  3. };
  4.  
  5. var texto = cortarTexto(texto);
  6.  
  7. texto.forEach(function(linea, index){
  8.    // i linea del texto...
  9. });

Saludos


Título: Re: Evitar que el substring me corte la palabra
Publicado por: yoelrodguez en 14 Febrero 2017, 22:38 pm
Muchas gracias por su respuesta y si me es de utilidad.

Saludos