elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Ayuda] Comprobar Símbolos en un string.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Comprobar Símbolos en un string.  (Leído 2,265 veces)
**Aincrad**


Desconectado Desconectado

Mensajes: 682



Ver Perfil WWW
[Ayuda] Comprobar Símbolos en un string.
« en: 1 Noviembre 2019, 22:42 pm »

Hola, hoy vengo con una duda. Como podría comprobar sin un string contiene símbolos?

Ejemplo :

Código:
Dim Cadena as string = "asd)$%&"·!"·"

If ContainsSimbols(Cadena) = True Then
       
End If

En este caso los simbolos que quiero detectar son algo como estos :



En línea



Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: [Ayuda] Comprobar Símbolos en un string.
« Respuesta #1 en: 2 Noviembre 2019, 19:35 pm »

El modo más simple... usando un bucle.
Donde o bien examinas cada carácter en la cadena a probar contra la cadena de caracteres 'buscados', o cara carácter buscado contra la cadena de entrada...


Código:
dim buscados as string = "xyz+-*/"
dim textoA as string = "buenos días y disfruten del desayuno"
dim textoB as string = "La ciudad no duerme"

ejemplo:
Código:
buleano = funcion ContieneAlgunCaracter(string buscados, string texto)
    bucle por cada caracter en buscados
        si texto.Contains(caracter) devolver TRUE
    fin bucle
    devolver FALSE
fin funcion

Probando los textos de ejemplo con la función:
Código:
Si ContieneAlgunCaracter(buscados, textoA)
  mensaje "El texto: """ + textoA + """ contiene algún carácter de estos: """ + buscados + ""
si no
  mensaje "El texto: """ + textoA + """ no contiene ningún carácter de la lista..."
fin si

Si ContieneAlgunCaracter(buscados, textoB)
   mensaje "El texto: """ + textoB + """ contiene algún carácter de estos: """ + buscados + ""
si no
  mensaje "El texto: """ + textoB + """ no contiene ningún carácter de la lista..."
fin si

Salida:
El texto: "buenos días y disfruten del desayuno" contiene algún carácter de estos: "xyz+-*/"

El texto: "La ciudad no duerme" no contiene ningún carácter de la lista...

Fíjate que si en la función intercambias los parámetros de los textos entre sí, sigue funcionando, sucede lo que decía en el párrafo al comienzo.

Si el texto prohibido-buscado será inalterable en el tiempo y muy buscado, es más rentable generar un array de reconocimiento, si bien es más costoso los preparativos, es más rápido su uso, porque solo requiere recorrer la cadena donde se busca, no las dos:
Código:
array de bytes/chars TblBuscados(0 a 255)
funcion CrearTabla(string Buscados)
   ' Si el texto no es fino, si no mutable en el tiempo, requiere un 'reset' previo de la tabla
    bucle para k desde 0 hasta 255
        TblBuscados(k) = 0
    siguiente

    bucle por cada caracter en buscados
        TblBuscados(caracter) = 1
    siguiente
fin funcion

La misma función de antes, pero ahora le basta como parámetro el texto que se quiere revisar...
Código:
buleano = funcion ContieneAlgunCaracter(string texto)
    por cada caracter en texto
        si TblBuscados(caracter) = 1 Devolver TRUE
    siguiente
    devolver FALSE
fin funcion

Este segundo método es mucho más rápido, si bien su preparativo es algo más largo y exige dos funciones... es útil cuando se usa con mucha frecuencia o los 'símbolos' prohibidos-exigidos que se buscan, no cambian con cada búsqueda.
Nota que métodos como 'Contains' aunque se invocan de forma atómica, en realidad son bucles pués exige recorrer el texto para ver si contiene el texto que se busca. Las líneas de código son básicamente las mismas las instrucciones del procesador en cambio no.


En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: [Ayuda] Comprobar Símbolos en un string.
« Respuesta #2 en: 4 Noviembre 2019, 16:58 pm »

Supongo que IndexOfAny haria el trabajo, si estas usando VB.NET seria algo como

Código
  1. Dim Cadena as string = "tu cadena iria aqui"
  2. ' especificas los simbolos que deseas buscar
  3. Dim sSimbolos() as String;
  4.  
  5. If Cadena.IndexOfAny(sSimbolos) = 0 Then
  6.  ' Simbolos encontrados
  7.  ' ...
  8. Else
  9.  ' Simbolos no encontrados
  10.  ' ...
  11. End If
  12.  
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines