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 de leosoft
1
1
leosoft, Programacion Avanzada en VisualBasic, trabajo hace mas de 15 años...
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