|
Página 1 de 2
|
Censor De Palabras, Sin Acabar
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Censor De Palabras, Sin Acabar
Hola!.
Estaba haciendo un censor de palabras.
Tenemos un texto y queremos censurar palabras que se van añadiendo a la lista.
El total de las palabras censuradas se cuentan, ( he visto otro error, si censuro dos veces por que he añadido otra palabra a la lista, no cuenta bien).
Bien. He añadido en el código cosas que hay que solucionar y que tengo que hacer aun.
Problemas:
- Si quito una palabra de la lista, la palabra debe ser restaurada en el texto y que pueda verse. Un array global supongo.
- Problema con palabras que tengan al lado una coma o un punto. En el array se almacenaría el elemento todo junto.
( En realidad no debería perderse la coma o el punto ). Cuando el texto es algo más de una frase no se deben perder los puntos, las comas, etc.
Subo el código por si queréis mejorar o solucionar los problemas.
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.56 KB |
Descargado: |
33 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.56 KB |
Descargado: |
33 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.56 KB |
Descargado: |
33 veces |
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#1 Viernes, 03 Octobre 2014, 00:31 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Censor De Palabras, Sin Acabar
Quién lo hubiera dicho, el amigo Shell abogando por la censura. Lo veo y no lo creo.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#2 Viernes, 03 Octobre 2014, 02:50 |
|
|
didier18
Aprendiz
Registrado: Junio 2014
Mensajes: 84
Edad: 66 Ubicación:
|
Re: Censor De Palabras, Sin Acabar
Hola Shell.
Si entiendo su problema, que desea ocultar una palabra de una frase o un texto ... ¿Es eso lo que quieres hacer?
En este caso creo que hay que tratar con el problema de una manera más general.
¿Por qué tratar a las palabras una tras otra si ' gambas' puede hacer por usted?
De hecho, usted puede encontrar la misma palabra varias veces en un texto y yo creo que hay que empezar por ahí ...
Haga doble clic en la palabra debe ser enviado de vuelta a la caja de texto y luego pulsar el botón, se tienen que buscar la palabra en todo el texto desde el principio del texto (por supuesto).
La palabra, una vez encontrado será reemplazado por dos estrellas (y la censura será más completa y mirando para poner la palabra más fácil.)
Si quiere censurar una segunda palabra para sustituirla con 3 estrellas y así sucesivamente ...
Como si usted quiere poner la palabra censurado # 3 usted sabrá que debe buscar en el texto de todas las secuencias de 4 estrellas ...
Que tengas un buen día.
|
#3 Viernes, 03 Octobre 2014, 08:44 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Censor De Palabras, Sin Acabar
- Problema con palabras que tengan al lado una coma o un punto. En el array se almacenaría el elemento todo junto.
( En realidad no debería perderse la coma o el punto ). Cuando el texto es algo más de una frase no se deben perder los puntos, las comas, etc.
Una solución podría ser ésta.:
última edición por vuott el Viernes, 03 Octobre 2014, 10:13; editado 2 veces
|
#4 Viernes, 03 Octobre 2014, 10:10 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Censor De Palabras, Sin Acabar
Dani:
Citar:
Quién lo hubiera dicho, el amigo Shell abogando por la censura. Lo veo y no lo creo.
Jajaja, es solo un ejemplo. En realidad , es una ampliación de un ejemplo de Python.
# Censor de palabras
def censor(text,word):
word_lst = text.split()
for i in range(len(word_lst)):
if word_lst[i] == word:
word_lst[i] = len(word_lst[i])* "*"
return " ".join(word_lst)
print (censor("Poderoso caballero es don Dinero", "Dinero"))
Didier:
Si, efectivamente. El ejemplo es capaz de buscar palabras repetidas.
Solo que hay que mejorarlo un poco. Siempre hay que mejorar.
Merci.
Vuott:
Esta tarde no creo que me ponga a mejorar el ejemplo, ( me voy de fiesta , pero no puedo beber mucho, tengo que volver al trabajo).
Asi que este fin de semana, veo mejor tu mejora.
Grazie mille!.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#5 Viernes, 03 Octobre 2014, 13:35 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Censor De Palabras, Sin Acabar
me voy de fiesta , pero no puedo beber mucho, tengo que volver al trabajo).
uhmmmmm..... al final de la fiesta tu estaras asì:
(trad.: Borracho pasea con pitón al cuello.)
http://www.ansa.it/lombardia/notizi...f8846cb5ec.html
|
#6 Viernes, 03 Octobre 2014, 14:40 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Censor De Palabras, Sin Acabar
uhmmmmm..... al final de la fiesta tu estaras asì:
(trad.: Borracho pasea con pitón al cuello.)
http://www.ansa.it/lombardia/notizi...f8846cb5ec.html
Je, pues no. Alguna copa, pero nada mas. Hay que ser responsable.
Como dice el compañero didier17, gambas da mejores posibilidades para sustituir las palabras.
Uno de los errores habituales es querer hacer las cosas de la misma forma que
el código original, cuando es posible usar las funciones internas que nos da el propio lenguaje, gambas o Python.
Cuando no la conocemos o no la recordamos usamos otros métodos mas "artesanales"
Por algún motivo en el ejemplo de Python no usó la función Replace. ( Y la tiene disponible )
Si vemos el código en Python es mejor hacerlo de esta forma para la función:
# Censor de palabras
def censor(texto,lista):
for palabra in lista:
texto = texto.replace(palabra,"*" * len(palabra))
return texto
lista_de_palabras =['caballero','Dinero']
print (censor("Poderoso caballero es don Dinero.",lista_de_palabras))
Quedando la función para censurar en gambas de esta forma:
Ahora solo me queda crear una variable global o pasada a la función que recuerde la frase y no se pierda usando solamente la propiedad .text del TextArea.
¿ Qué opinas Vuott ?.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#7 Sabado, 04 Octobre 2014, 00:04 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Censor De Palabras, Sin Acabar
Hola.
Aquí os dejo el código con la función mejorada. Merci didier18.
Y gracias a ti Vuott. El código de tu función era un poco más largo.
Queda por solucionar el problema de recuperar la palabra en caso de borrar una palabra de la lista y que se restaure en el texto.
Eso parece fácil, pero ahora ya no son horas.
¿ Debí sustituir el anterior ?. Oh oh.
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.47 KB |
Descargado: |
26 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.47 KB |
Descargado: |
26 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
CensorDePalabras.tar.gz |
Tamaño: |
8.47 KB |
Descargado: |
26 veces |
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Sabado, 04 Octobre 2014, 00:27; editado 1 vez
|
#8 Sabado, 04 Octobre 2014, 00:24 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Censor De Palabras, Sin Acabar
Quedando la función para censurar en gambas de esta forma:
Sì, bravo, es muy breve.
|
#9 Sabado, 04 Octobre 2014, 00:40 |
|
|
didier18
Aprendiz
Registrado: Junio 2014
Mensajes: 84
Edad: 66 Ubicación:
|
Re: Censor De Palabras, Sin Acabar
Hola amigos.
Creo que para que (todavía) una pequeña mejora de su proyecto, podría usar un 'PopMenu' en el 'TextArea ...
Usted bien podría ser el código más flexible para una inversión mínima.
Por supuesto, es necesario adaptar las rutinas 'PopMenu' de acuerdo a sus necesidades, pero de esta manera que su aplicación tendrá un aspecto más profesional.
Esto es lo que puede dar (por su ejemplo).
Como usted va a trabajar en "Los mensajes de texto" He utilizado el apoyo del ratón ...
Public Sub Texto_MouseDown()
Dim Popmenu, pmnu As Menu
If Mouse.Right Then 'si on a cliqué avec le bouton droit de la souris
Popmenu = New Menu(FMain) 'création du pop up menu
pmnu = New Menu(Popmenu) As "pmnuCensurar" 'création de l'item 0 dans le pop up menu
pmnu.Text = ("Censurar") & Vtxt 'texte de l'item 0
pmnu = New Menu(Popmenu) As "pmnu2" 'création de l'item 1 dans le pop up menu
pmnu.Text = ("pmnu2") 'texte de l'item 1
pmnu = New Menu(Popmenu) As "pmnu3" 'création de l'item 2 dans le pop up menu
pmnu.Text = ("pmnu3") 'texte de l'item 2
pmnu = New Menu(Popmenu) As "pmnu4" 'création de l'item 3 dans le pop up menu
pmnu.Text = ("pmnu4") 'texte de l'item 3
If Popmenu Then Popmenu.Popup() 'si on clique sur pop up menu on affiche les items
Endif 'fin de si on a cliqué avec le bouton droit de la souris
End
Public Sub pmnuCensurar_Click() 'menu pop up Censurar las palabras
End
Public Sub pmnu2_Click()
End
Public Sub pmnu3_Click()
End
Public Sub pmnu4_Click()
End
No dudo que el 'PopMenu' no tiene un secreto para usted, pero me puso este ejemplo 'hackeado' para toda la comunidad (si puede ayudar o dar ideas .. .;-)
Para que este ejemplo funcione, debe hacer un doble "clic" en la palabra que desea ver y luego un clic derecho del ratón se abre el menú PopMenu ...
Salí de comentarios en francés, pero el código es tan simple que trasladase ...
que tengas un buen día
|
#10 Domingo, 05 Octobre 2014, 10:01 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|