Contador de palabras

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.

4 respuestas

Respuesta
1
Prueba este Java Script. Espero te sea útil.
<html>
<head>
<script>
function contar() {
palabras = 1;
if (document.data.texto.value.length=="") palabras = 0;
for (i=0;i<document.data.texto.value.length;i++)
{
if ( document.data.texto.value.substring(i,i+1)==" " ) palabras++;
}
document.data.cuenta.value = palabras;
}
</script>
</head>
<body>
<form name="data">
<textarea name="texto" cols="40" rows="4" onkeyup="contar()" onkeypress="contar()" >
</textarea><br>
<input type="Text" name="cuenta" size="3" maxlength="3">
</form>
</body>
</html>
Respuesta
1
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.
Respuesta
1
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.
Respuesta
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas