Foros del Web » Programando para Internet » Javascript »

Añadir \n al final de linea si tiene 97 carteres

Estas en el tema de Añadir \n al final de linea si tiene 97 carteres en el foro de Javascript en Foros del Web. Hola, tengo una duda, y es que necesito como en el titulo pongo un codigo q lea la linea de caracteres y cada 97 añada ...
  #1 (permalink)  
Antiguo 28/11/2010, 08:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 29
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Añadir \n al final de linea si tiene 97 carteres

Hola, tengo una duda, y es que necesito como en el titulo pongo un codigo q lea la linea de caracteres y cada 97 añada un salto de linea " \n" con este codigo he conseguido q cada 97 caracteres me añada el salto, pero si añades varios saltos de linea no me sale bn. Por cierto es un textarea donde quiero q actue el codigo. adjunto codigo:

Código:
function enter1(){
var texto  = document.forms['not_ini']['textoAUN'].value ;
var texto1 = document.forms['not_ini']['textoAUN'].value.length;
var texto2 = document.forms['not_ini']['textoAUN'].value.match(/\n+/g);
var cuenta = texto2?texto2.length:0;

	if(texto1 == 96){
	document.forms['not_ini']['textoAUN'].value = texto + "\n" ;
	}
	if(texto1 == 97*2 +1){
	document.forms['not_ini']['textoAUN'].value = texto + "\n" ;
	}
if(cuenta >= 2){

	if(texto1 == (97* (cuenta+1)) + cuenta){
	document.forms['not_ini']['textoAUN'].value = texto + "\n" ;
	}

}
}
muchas gracias de antemano.

Última edición por MetalWolf; 28/11/2010 a las 08:27
  #2 (permalink)  
Antiguo 28/11/2010, 12:36
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Añadir \n al final de linea si tiene 97 carteres

podrías hacerlo mucho más simple en menos de 5 lineas.
  • primero haces un split a la cadena por todos los saltos de lineas para separarlos en párrafos.
  • iteras el array devuelto por split. en cada elemento haces una busqueda global con una expresión regular en match(). la expresión será una donde el patrón busque la cantidad de ocurrencias (97) de cualquier caracter que no sea line-terminator (terminación de lineas, por ejemplo salto de lineas). o sea, la clase any-char. match duelve otro array el cual lo unes (join) con un salto de linea. este resultado se lo asignas al elemento actual en iteración.
  • finalmente unes el primer array con dos saltos de lineas y resultado lo imprimes en el campo.

ahora bien, notese en que en esta solución no se esta considerando la división de palabras. por lo que una palabra puede ser dividida en la sílaba incorrecta o incluso una puntuación pudiera quedar en la próxima línea.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/11/2010, 14:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 29
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Añadir \n al final de linea si tiene 97 carteres

lo siento q responda tarde, nos e muy bien como hacerlo puesto que mis conocimientos de javascript son basicos. adjunto el codigo q conseguido formar y haber si me podeis ayudar a terminarlo:

Código:
function enter(){
var texto  = document.forms['not_ini']['textoAUN'].value ;
var texto1 = texto.split("\n");
	for(i=0;i<texto1.length; i++){
		var uno = texto1[i].match(/[adgk]/g);
		texto = texto + uno.join("\n");
	}
}
  #4 (permalink)  
Antiguo 29/11/2010, 15:42
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Añadir \n al final de linea si tiene 97 carteres

  • la expresion regular debe ser
    Código:
    /.{1,97}/g
    
  • en la siguiente linea
    Código:
    texto = texto + uno.join("\n");
    
    a) texto + esta de mas y b) el resultado lo asignas a texto1[i]
  • al final de la funcion (antes del cierre del cuerpo) falta unir (join) los elementos del array texto1 con dos salto de lineas. esa union la asignas al campo de texto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 29/11/2010 a las 16:02 Razón: falto un detalle de la regexp

Etiquetas: añadir, final, linea
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:55.