Foros del Web » Programando para Internet » Javascript »

Acortar cadenas de texto

Estas en el tema de Acortar cadenas de texto en el foro de Javascript en Foros del Web. Necesito validar en un textarea que no haya palabras de mas de cierto numero de caracteres (ej:30) El código consistiría en ir contando el numero ...
  #1 (permalink)  
Antiguo 04/11/2007, 03:21
Avatar de Wel
Wel
 
Fecha de Ingreso: marzo-2003
Mensajes: 77
Antigüedad: 21 años, 1 mes
Puntos: 0
Acortar cadenas de texto

Necesito validar en un textarea que no haya palabras de mas de cierto numero de caracteres (ej:30)
El código consistiría en ir contando el numero de caracteres que tiene el textarea, hasta que se encuentre un espacio en blanco o retorno de línea. Si el numero es mayor por ejemplo que 30, devuelve un mensaje del tipo:

"Esta usando palabras demasiado largas, por favor use espacios en blanco para separarlas".

Esto lo necesito realiza ya que cuando alguien escribe cadenas del tipo:

"aaaaa.bbbbb.ccccc...jajajjjaaaaa.jaaaa.jjaaa..... .... 1 2 3".


Al mostrar el contenido en la web, aparece demasiado alargada horizontalmente, ya que hay palabras demasiado largas, por ello necesito que antes de enviar la información del formulario se valide que no haya mas de 30 caracteres seguidos antes de un espacio en blanco o un retorno de línea
Alguien me puede orientar un poco como hacerlo, o si ya existe algún post parecido sobre este tema, que me indique la ruta, pues he estado buscado en el foro y aunque he visto cosas que parecían que podían valerme, al final no he podido saca el código javascript que necesito para esta validación.


También he pensado no validar este tipo de cadenas y tratarlas a la hora de mostrarlo para que saque algo así:

"aaaaa.bbbbb.ccccc...jaja...[+] 1 2 3"


Aunque tampoco se como hacerlo… ¿Qué seria mejor.?
  #2 (permalink)  
Antiguo 04/11/2007, 03:33
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Acortar cadenas de texto

Hola Wel

Separa el texto por palabras:

Código:
txt = document.forms[0].tuTextarea.value;
palabras = txt.split(' ');
Ahora en el array palabras tienes todas las palabras del texto, lo recorres con un bucle y vas viendo los caracteres que tiene cada uno. Por ejemplo, la primera palabra sería:

Código:
caracteres = palabras[0].length
Saludos,
  #3 (permalink)  
Antiguo 04/11/2007, 03:46
Avatar de Wel
Wel
 
Fecha de Ingreso: marzo-2003
Mensajes: 77
Antigüedad: 21 años, 1 mes
Puntos: 0
Re: Acortar cadenas de texto

JavierB, eres la caña, voy a picar el código, a ver si funciona... MUCHA GRACIAS!!, en cuanto lo tenga, hago un copy&paste y lo pego en otro mensaje de este tema, por si le sirve a alguien.

UN SALUDO!!
  #4 (permalink)  
Antiguo 04/11/2007, 05:25
Avatar de Wel
Wel
 
Fecha de Ingreso: marzo-2003
Mensajes: 77
Antigüedad: 21 años, 1 mes
Puntos: 0
Re: Acortar cadenas de texto

JavierB me esta surgiendo un problemita, y es que después de poner esto:

txt = document.forms[0].tuTextarea.value;
palabras = txt.split(' ');


"palabras", tiene un array de todas la palabras que compone "txt", excepto para cuando hay un retorno de línea, en cuyo caso la última palabra de la línea y la siguiente la considera como una sola.
si tengo:

"abc abc" en el textarea, entonces Palabras = ["abc","abc"] con lo cual si está contando bien, pero si en el textarea se escribe con salto de línea:
"abc abc"
"def def"
Palabras = ["abc","abc def","def"]


Por lo tanto si el tamaño máximo de caracteres fuese 5 (por ejemplo), esto me daría error, pues el segundo índice de "PALABRAS" es mayor de 5... y en la realidad no es así... ¿Existe la posibilidad de hacer algo parecido a eso?:

palabras = txt.split(" " or "\n")


Te pongo el código que tengo hecho, que funciona correctamente, (siempre que en el textarea no tenga saltos de línea en el que la última palabra de una línea y la primera de la siguiente no sean mayores que 10.)

Código HTML:
<HTML>
   <HEAD>
	<TITLE> New Document </TITLE>

	<script>
		 function Verificar(){
			var num_max_caracteres = 10;
			Mensaje = document.getElementById('formulario').mensaje.value;
			Vector_Palabras = Mensaje.split(" ");

			for (i=0;i<Vector_Palabras.length;i++){
				Num_Caracteres = Vector_Palabras[i].length
				if (Num_Caracteres > num_max_caracteres){window.alert("La "+(i+1)+"ª palabra que ha escrito : \n\n'"+Vector_Palabras[i]+"'\n\n es demasiado larga, tiene más de "+num_max_caracteres+" caracteres.\n\n¡¡¡ USE ESPACIOS EN BLANCO !!!.");return false}
			}	 
			return true;
		}
	</script>

   </HEAD>

   <BODY>


      <form name="formulario" method="post" onSubmit="return Verificar();">

		<textarea name="mensaje"></textarea>

		<input name="submit" type="submit" value="A&ntilde;adir">
      </form>

   </BODY>
</HTML> 
  #5 (permalink)  
Antiguo 04/11/2007, 06:40
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: Acortar cadenas de texto

Usá split(/\s/)
  #6 (permalink)  
Antiguo 04/11/2007, 07:45
Avatar de Wel
Wel
 
Fecha de Ingreso: marzo-2003
Mensajes: 77
Antigüedad: 21 años, 1 mes
Puntos: 0
Re: Acortar cadenas de texto

De lujo... GRACIAS.
YA FUNCIONA OK!!
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 06:15.