En este tip les mostraré una pequeña Clase en Actionscript 3 para contar las palabras en un campo de texto.
Este es el código:
Código :
package Classes { import flash.text.TextField;
public class CountWords { private var wordsArray:Array = new Array(); //Array donde se almacenan las palabras. private var wordsNumber:String; //Aqui se guarda el número de palabras.
public function count(target:TextField):String //Donde "target" es el nombre de instancia del campo de texto { wordsArray = target.text.split(" "); //Lo que hace "split()" es dividir un String, usando como separador el contenido de los parentesis. wordsNumber = new String(wordsArray.length - 1); //Restamos 1 al numero de palabras, ya que las arrays comienzan a contar desde 0.
return wordsNumber + " Words"; } } }
Aquí está el ejemplo:
Escribe sobre las lineas, las palabras se contarán automáticamente.
Obvio, es un contador de palabras, no un reconocedor de palabras.
Si escribes "cualquier", es una palabra, pero que tal si la palabra que querías era "cualquiera" es por eso que hasta no haber una separación se cuenta como palabra.
Got it?
No se ha tomado en cuenta Enter en el ejemplo, pero si alguien lo cree conveniente y no sabe como hacerlo sólo posteelo.
Es un contador de "espacios". Lo malo que si escribes una frase y la acabas con un punto. Esa última palabra no te la cuenta. Pero por lo demás es un muy buen tip.
Otro tema que no tiene en cuenta son los apóstrofos de inglés (I am -> I'm), francés (la eau -> l'eau) o català (el arbre -> l'arbre) aunque estén contraídas siguen siendo dos palabras.
Bueno a mi me parece bien chevere , Grax sensei por compartir tu sabiduría u_u . Es una idea de lo que se puede hacer en flash pues esta ya esta, para las observaciones anteriores habria q ponerle un poco de lógica supongo y listo el pollo a la brasa!!! hay que rico se me hizo agua a la boca,(homero) un pardos chicken x favor!!! .
mmmm este método es un poco burdo, para realizar ese conteo, pues al haber una cantidad no homogenea de espacios, la cantidad de palabras podría no ser la correcta Lo ideal sería usar Expresiones regulares, las cuales ya son soportadas en AS3
Obvio, es un contador de palabras, no un reconocedor de palabras.
Si escribes "cualquier", es una palabra, pero que tal si la palabra que querías era "cualquiera" es por eso que hasta no haber una separación se cuenta como palabra.
Got it?
No se ha tomado en cuenta Enter en el ejemplo, pero si alguien lo cree conveniente y no sabe como hacerlo sólo posteelo.
Hay un personaje de TV viejiiiisiiimo que se parece a ti. Jalisco.
Jalisco nunca perdía, máximo empataba. Nunca aceptaba un error, siempre el error era de otro. Y se inventaba las cosas más extrañas para demostrar que no era su culpa, la culpa era del resto.
Mira bien los comentarios de los demás y el titulo del tip. Con un arreglo al algoritmo que requiere sólo un poco de esfuerzo será un verdadero contador de palabras. Ahora mismo, solamente es un contador de cuantos espacios tiene un campo de texto. No seas Jalisco.
Hay un personaje de TV viejiiiisiiimo que se parece a ti. Jalisco.
Jalisco nunca perdía, máximo empataba. Nunca aceptaba un error, siempre el error era de otro. Y se inventaba las cosas más extrañas para demostrar que no era su culpa, la culpa era del resto.
Mira bien los comentarios de los demás y el titulo del tip. Con un arreglo al algoritmo que requiere sólo un poco de esfuerzo será un verdadero contador de palabras. Ahora mismo, solamente es un contador de cuantos espacios tiene un campo de texto. No seas Jalisco.
No es que nunca me equivoque, es que lo que posteo aquí son ejemplos, solamente ejemplos, lo cual es algo que ustedes no saben que es.
Ejemplo loc. ...Se usa para introducir una prueba o aclaración, o para ilustrar o autorizar lo que antes se ha dicho.
Los ejemplos NO son programas terminados y mucho menos sin errores, son sólo una prueba de aplicación de la Clase, el ejemplo cuenta espacios, que es una manera muy fácil de contar las palabras (y más utilizando un botón).
En fin, tomo en cuenta los comentarios que agradecen aún señalando que el código no está terminado, no los que sólamente critican.
En cuanto a la usabilidad, gracias a los que me hicieron entender que la gente es tonta, y que para escribir necesitan que les pongamos el lapiz en la mano y sobre el papel.
Los ejemplos NO son programas terminados y mucho menos sin errores, son sólo una prueba de aplicación de la Clase, el ejemplo cuenta espacios, que es una manera muy fácil de contar las palabras (y más utilizando un botón).
Ah, es decir, aún no está terminado. Y ahora que lo veo no está el código completo de uso. En un futuro entonces avisanos así lo pasamos a portada en cuanto esté listo.
Este tipo de ejemplos se me hacen muy buenos porque contribuyen algo a la comunidad. Lo que no se me hace tan bueno es la critica sin dar una solución. Si les parece que no funciona perfectamente entonces propongan algo mejor y no traten de buscarle 3 pies para criticar.
Los apostrofes en otros idiomas... dios!
El ejemplo es correcto. Si quieres seguir utilizando el split debes de encontrar alguna manera de eliminar (splice) los indices de la matriz con length 0. Al final ya no deberías de restarle uno al length de tu resultado.
Pero bue... a ver que si pones eso le van a encontrar que en el idioma "123 morse zion" no utilizaban palabras si no derivados del algoritmo eclesiastico antiguo izquierdo y que tu clase las cuenta igual como palabras.
Gracias a los que saben apreciar una Colaboración.
todos apreciamos las colaboraciones, no te la tomes tan en serio (como dice Dani)
lo unico q te comentamos, es q el titulo difiere de lo q hace, cuenta espacios, eso es clarisimo, pero no cuenta las palabras.
tus aportes son buenos, pero intenta completar la idea para q no recibas estos comentarios.
mira q es un avance en ti, ya nadie te opinó de la usabilidad
aparte, debes entender q al hacer un tip o tutorial, estas expuesto a cualquier comentario, bueno o malo, todos pensamos diferente y podemos aportar sobre tu tip. Te acostumbraras
Granatta: Buenisimooooooooooo el efecto de los banners para rexona V8, ya quisiera ser como tú y el juego mmmmmmmmmmmmmmmm... parece que se viene una bombazaaaa .
Estoy un poco de acuerdo con mi conciencia (algo bastante razonable). Lo mejor sería proveer una solución, pues aquí va (el código se lo dejo al autor original).
La solución es mejorar la lógica del split y actualizar el count con cada letra presionada y no solo con el espacio.
No entiendo como algunos quieren dar una lección de lo que es una colaboración en internet.
Yo felicito nuevamente la básica idea de querer poner algo aqui. Den críticas constructivas y no quieran criticar desde afuera algo hecho con buena intencion. Me pregunto yo, a quien le han ganado ustedes para ponerse en esa posición?
"propongo un cambio de nick
* se va corriendo!!!!"
Eso es tirar la piedra y salir corriendo literalmente. En muchos lugares es conocido hasta como spam.
Si no tienen nada que aportar es mejor que se queden callados.
public static function count(str:String):uint{ var t:Array = str.split("\n").join(" ").split(" "); var bool:Boolean = false; var count:uint = 0; for each(var i:String in t) if(i.length) count ; return count; }
} }
No puedo predicar colaboración si no lanzo mi propia versión.
Sigo con tu misma línea de nombres y utilizando el split pero le quito la dependencia a un TextField.