Soy un poco inexperto en esto de java. He conseguido un script de java donde aparece un campo de texto y según vas escribiendo, abajo hay otro campo donde te va indicando la cantidad de caracteres que vas introduciendo. Mi duda es si sabes algún script para que en vez de contar los caracteres, te cuente las palabras enteras por los espacios en blanco que hay entre palabra y palabra.
Lo siento, no tengo ningún script que cuente palabras, pero voy a intentar de explicarte como se hace: Todos los componentes gráficos de java derivan de Java. Awt.component, existe la posibilidad mediante el uso del método addKeyListener de esta clase de insertar un programita que se ejecutara cada vez que se pulse la tecla. Este programita deberá se un objeto de una clase q que implemente el interfaz KeyListener, si miras las especificación de este interfaz podrás ver que hay un método que se llama keyPressed que es invocado cada vez que se pulsa una tecla. Este método es el encargado de contar las palabras. ¿Cómo hacer que las cuente?, muy simple, simplemente comprueba que la tecla que se ha pulsado es el espacio y incrementa el contador en 1. Se que de bote pronto parece un poco liosos, pero si consultas detenidamente el api de java veras que no es tan difícil.
Es fácil, construyes un StringTokenizer pasándole tu cadena y como separador el espacio " ". Y llamas a su método countTokens. String miCadena = la frase; int numPalabras = new StringTokenizer(miCadena, " ").countTokens();
Muchas gracias por tu pronta respuesta. Solo una duda. ¿Dónde incrusto eso en el código HTML? Es que, como no se mucho de java, no se donde va eso dentro del código. Muchas gracias Raul
Enviame lo que tienes donde ya contaba las letras (pega el código que tengas en el correo)
Hola Raul. Muchas gracias por la mano que me estas echando. Tengo 2 contadores que hacen esa función. El primero es: <html> <head> <title>Numero de caracteres on-line</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> body {font-family:verdana;font-size:10px} textarea,input </style> <script> function WordCountOnLine() { /* Función que me cuenta el número de caracteres on-line que hay en el área de texto */ form = document.formulario; form.caracteres.value = form.area.value.length; setTimeout("WordCountOnLine();",300); } </script> </head> <body bgcolor="#FFFFFF" text="#000000" onLoad="WordCountOnLine();"> <form name="formulario" action="" method="post"> <br> Empiece a escribir...<br> <textarea name="area" style="font-family:verdana;font-size:12px;" rows=10 cols=50></textarea><br> <input name="caracteres" style="font-family:verdana;font-size:12px;" type="text" size=4> <br> <br> </form> </body> </html> y el segundo es: <script language="JavaScript"> function reVisar(){ if (document.f.txtc.value!=document.f.txta.value.length) document.f.txtc.value=document.f.txta.value.length; setTimeout("reVisar();",200);} function reVisarNN4(){document.f.txtc.value=document.f.txta.value.length+1} onload=reVisar // --></script> <form name="f"> <textarea name="txta" rows="4" cols="15" wrap="physical" onKeyPress="reVisarNN4"></textarea> <br> <input type="text" size="5" name="txtc" readOnly disabled> </form> Ademas tengo otro javascipt que hace algo parecido: <html> <head> <title>WordCount</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT> function wordCount() { // Función que nos va a contar el número de caracteres y de palabras del area de texto // de un formulario // Obtenemos el texto del area. textoArea = document.formulario.area.value; // El numero de caracteres es su longitud numeroCaracteres = textoArea.length; // Eliminamos los caracteres en blanco del inicio y del final. // Como no tenemos funciones del tipo trim, rtrim y ltrim usamos // expresiones regulares inicioBlanco = /^ / // El ^ indica principio de cadena finBlanco = / $/ // El $ indica final de cadena variosBlancos = /[ ]+/g // El global (g) es para obtener todas las posibles combinaciones textoArea = textoArea.replace(inicioBlanco,""); textoArea = textoArea.replace(finBlanco,""); textoArea = textoArea.replace(variosBlancos," "); // Creamos un array con las diferentes palabras. Teniendo en cuenta que la separación // entre palabras es el espacio en blanco. textoAreaDividido = textoArea.split(" "); numeroPalabras = textoAreaDividido.length; // Mostramos los datos. // Tendremos en cuenta si hay que escribir en plural o en singular. tC = (numeroCaracteres==1)?" carácter":" caracteres"; tP = (numeroPalabras==1)?" palabra":" palabras"; alert (numeroCaracteres + tC +"\n" + numeroPalabras + tP); } </SCRIPT> </head> <body bgcolor="#FFFFFF" text="#000000"> <FORM NAME="formulario"> <TEXTAREA NAME="area" COLS=20 ROWS=10> Texto dentro del área de texto </TEXTAREA><BR> <INPUT TYPE="button" VALUE=" Contar las palabras " onClick="wordCount();"> </FORM> </body> </html> Pero este te saca un mensaje de alerta, y no un cuadro de texto que te salga el numerito de las palabras que vas introduciendo. De este último me han dicho que la solución seria que lo tengo que llamar mediante un setTimeOut y que en vez de sacarlo en una ventana lo meta en un formulario. con form.campotexto.value, pero no se como se hace eso. ¿Me echas una mano?. Muchiiiiiiisimas gracias por adelantado. P.D. Tranquilo, que en cuanto me respondas, te puntúo. Gracias
Pensé que estábamos hablando de Java. Lo siento pero no soy bueno en Java Script. Y no sé como hacer en JavaScript lo que te he explicado para Java. No te preocupes por los puntos, no me dan de comer. Siento no poder ayudarte más.
Primero, java no es un lenguaje de scripts. La diferencia entre java y por ejemplo, javascript, es que un archivo escrito en java necesita ser compilado, mientras que el de javascript no. Si estás apurado, dirígete a www.planet-source-code.com. Allí podrás encontrar cosas interesantes ya desarrolladas.