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...
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:
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:
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:
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...
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.