Comparación de cadenas en visual basic

Antes de nada agradecer tu interés.
Me gustaría saber si conoces algún método para comparar cadenas en Visual Basic, sin tener en cuenta los acentos. Es decir que árbol sea igual a árbol

1 respuesta

Respuesta
1
Aca te envio una funcion que te prepare, fijate si te sirve:
Private Function Comparar(TextoA As String, TextoB As String) As Boolean
If TextoA = TextoB Then GoTo correcto
If Not Len(TextoA) = Len(TextoB) Then GoTo Incorrecto
Dim Igual As Boolean
For X = 1 To Len(TextoA)
If Not Mid(TextoA, X, 1) = Mid(TextoB, X, 1) Then
Igual = False
Select Case Mid(TextoA, X, 1)
Case "a"
If Mid(TextoB, X, 1) = "á" Then Igual = True
Case "e"
If Mid(TextoB, X, 1) = "é" Then Igual = True
Case "i"
If Mid(TextoB, X, 1) = "í" Then Igual = True
Case "o"
If Mid(TextoB, X, 1) = "ó" Then Igual = True
Case "u"
If Mid(TextoB, X, 1) = "ú" Then Igual = True
Case "á"
If Mid(TextoB, X, 1) = "a" Then Igual = True
Case "é"
If Mid(TextoB, X, 1) = "e" Then Igual = True
Case "í"
If Mid(TextoB, X, 1) = "i" Then Igual = True
Case "ó"
If Mid(TextoB, X, 1) = "o" Then Igual = True
Case "ú"
If Not Mid(TextoB, X, 1) = "u" Then Igual = True
End Select
If Igual = False Then GoTo Incorrecto
End If
Next
GoTo correcto
Incorrecto:
Comparar = False
Exit Function
correcto:
Comparar = True
End Function
para utilizarla es asi:
resultado = Comparar(Texto1, Text2)
Los textos a enviar tiene que ser String, y esta función te entrega un Boolean que vale Verdadero si la cadena es igual, fíjate que al comparar la caden, primero ve si son idénticas, luego ve si son del mismo tamaño, y si no son idénticas pero si de mismo tamaño, compara letra por letra y existe una tabla de excepciones a comparar, ya le puse los acentos, vos si quieres le podes agregar algún carácter más.
Esero te sirva.
Muchas gracias por tu respuesta.
De momento no la podré utilizar en mi código, ya que lo que hago es una consulta a una base de datos y utilizo la comparación en la clausula Where (Where Texto1=Texto2). Por lo que le estoy dando vueltas sobre como cambiar mi código para poder utilizar tu función.
Me queda no obstante una duda:
¿en los Case no sería necesario ampliar el condicional a if Mid(TextoB,X,1)="ó" or Mid(TextoB,X,1)="o"?.
De todas las maneras la solución que me has mandado me parece buena y la valoro como Muy Bien
Gracias de nuevo y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas