Alguien sabe como puedo comparar de manera simple una letra con el abecedario y los numeros del 0 al 9?
Yo tengo una letra "g" y quiero crear una funcion k me devuelva true si es valida y false si no.
Para k sea valida tiene k ser un caracter entre a-z, entre A-Z , o entre 0-9, en resemen, k sea una letra de el abecedario o un numero.
El caso s k no me apetece poner todas las letras una por una, alguien sabe como hacerlo mas resumido?
Creo k ay una funcion en vb k es "isnumeric" o algo asi k te dice si es un numero...
Salu2
Puedes crear tu propia funcion que vaya comparando todos los caracteres de la palabra o string que le indiques con los caracteres invalido y si encuentra uno invalido pues que retorne false.
Lo k ago aora es compararlo con los caracteres invalidos, pero funcina mal cuando hay saltos de linea.
Por eso quiero compararlo con los caracteres validos.
Salu2
Te interesa comparar los saltos de lineas? En caso de que no pues seria algo asi:
function isalphanumeric(txt as string) as boolean
dim validos() as string
validos = 'todos los caracteres que consideres validos
txt = str_replace(txt,vbnewline,"") ' para eliminar los salto de lineas
for i = 0 to len(txt)
for x = 0 to ubound(validos)
if not mid(str,i,1) = validos(x) then
return false
end if
next x
next i
end function
No se el codigo lo hice rapido y se nota que hace mucho que no programo en vb :P Pero es para que tengas una idea de como hacerlo.
Es muy sencillo, sólo son un par de condiciones para evaluar cada caracter, y determinar si está en el rango de valores de los caracteres ASCII que necesitas.
Te dejo un código que sirve para reconocer lo que necesitas, en lugar de usar muchos If que alentizan el proceso usé una comparación binaria.
Insertar Renglón de tabla
Te dejo abajo una explicación de lo que hace el código. La siguiente tabla indica en qué casos IsAscii será True.
iChar mayor o igual que vbKeyA (letra A) y menor o igual que vbKeyZ (letra Z)
iChar mayor o igual que vbKeyA+32 (letra a) y menor o igual que vbKeyZ+32 (letra z)
iChar mayor o igual a 48 (número 0) y menor o igual a 57 (número 9)
Function IsAscii(ByVal Data As String) As Boolean
Dim i&, iChar%
For i = 1 To Len(Data)
iChar = Asc(Mid$(Data, i, 1))
IsAscii = (((iChar >= vbKeyA) And (iChar <= vbKeyZ)) Or _
((iChar >= vbKeyA + 32) And (iChar <= vbKeyZ + 32)) Or _
((iChar >= 48) And (iChar <= 57)))
If Not IsAscii Then Exit For
Next
End Function
Saludos.
Angellore.
Gracias , pero me sirvio lo de Crack_X ;)
Salu2