2009-05-23 21 views
13

Afortunadamente esta debería ser una pregunta fácil. En java, creo que es compareTo().comparando cadenas en vb

¿Cómo comparo 2 variables de cadena para determinar si son las mismas?

es decir:

If (string1 = string2 And string3 = string4) Then 
    'perform operation 
Else 
    'perform another operation 
End If 
+0

¿Es este "clásico" vb o vb.net? –

+0

el que está en visual web developer 2008. vb.net asumo –

Respuesta

16

se recomienda usar el método String.Compare. Usando ese método también puede controlar si hacer que realice comparaciones con mayúsculas y minúsculas o no.

muestra:

Dim str1 As String = "String one" 
Dim str2 As String = str1 
Dim str3 As String = "String three" 
Dim str4 As String = str3 

If String.Compare(str1, str2) = 0 And String.Compare(str3, str4) = 0 Then 
    MessageBox.Show("str1 = str2 And str3 = str4") 
Else 
    MessageBox.Show("Else") 
End If 

Editar: si desea realizar una búsqueda sensible a las mayúsculas se puede utilizar el parámetro StringComparison:

If String.Compare(str1, str2, StringComparison.InvariantCultureIgnoreCase) = 0 And String.Compare(str3, str4, StringComparison.InvariantCultureIgnoreCase) = 0 Then 
+3

Esta respuesta es innecesariamente complicada. Si el caso es importante, simplemente haz "str1 = str2". Para ignorar el caso, haga "String.Equals (str1, str2, StringComparison.InvariantCultureIgnoreCase)". O cualquiera que sea la variante StringComparison adecuada para su tarea. No es necesario usar 'Comparar', que desordena el código con' = 0'. Y requiere que el lector piense un poco más sobre la intención del código. 'Equals' hace que el intento sea obvio. El único momento en que usaría 'Comparar' es cuando los valores distintos de' 0' son necesarios (clasificación). – ToolmakerSteve

+1

Es interesante que 'String.Compare (str1, str2)' arroje 'False' cuando son iguales, y' True' cuando no son iguales. – Panzercrisis

+1

@Panzercrisis ¡me lo dices!No leí esta respuesta lo suficiente e hice una tonelada de = 1 pensamiento = 1 lanzamientos a True ... Voy a seguir el consejo de ToolmakerSteve sobre decluttering usando Equals. No veo esto como "interesante" como dijiste, lo tomo como extremadamente confuso y no intuitivo si alguna vez has codificado antes, donde 0 = falso y 1 = verdadero en casi todos los casos. – whyoz

11
Dim MyString As String = "Hello World" 
Dim YourString As String = "Hello World" 
Console.WriteLine(String.Equals(MyString, YourString)) 

devuelve un bool Verdadero. Esta comparación es sensible a mayúsculas y minúsculas.

Así que en tu ejemplo,

if String.Equals(string1, string2) and String.Equals(string3, string4) then 
    ' do something 
else 
    ' do something else 
end if 
+0

esto no funciona! ¡lo siento! –

+0

Lo tengo de aquí: http://msdn.microsoft.com/en-us/library/fbh501kz(VS.80).aspx –

+1

FYI, funciona bien, lo uso todo el tiempo. Aunque en vb.net y más reciente, uno normalmente usa "AndAlso" en lugar de "Y", para hacer solo la segunda comparación si es necesario ("evaluación de cortocircuito"). – ToolmakerSteve

9

En vb.net en realidad se puede comparar cadenas con =. Aunque String es un tipo de referencia, en vb.net = en String se ha redefinido para hacer una comparación de mayúsculas y minúsculas de contenido de las dos cadenas.

Puede probar esto con el siguiente código. Tenga en cuenta que he tomado uno de los valores de la entrada del usuario para garantizar que el compilador no pueda usar la misma referencia para las dos variables, como el compilador de Java si las variables se definieran a partir de la misma cadena Literal. Ejecute el programa, escriba "This" y presione <Ingrese>.

Sub Main() 
    Dim a As String = New String("This") 
    Dim b As String 

    b = Console.ReadLine() 

    If a = b Then 
     Console.WriteLine("They are equal") 
    Else 
     Console.WriteLine("Not equal") 
    End If 
    Console.ReadLine() 
End Sub 
-3
If String.Compare(string1,string2,True) Then 

    'perform operation 

EndIf 
+0

Esto no parece tener casi tantos detalles como la respuesta aceptada hace algunos años. ¿Alguna razón en particular para publicarlo? –

0

Sé que esto ha sido contestada, pero en VB.net por encima de 2013 (la más baja que he utilizado personalmente) sólo se puede comparar cadenas con un operador =. Esta es la manera más fácil.

Así que, básicamente:

If string1 = string2 Then 
    'do a thing 
End If 
0

Creo que este String.Equals es lo que necesita.

Dim aaa = "12/31" 
      Dim a = String.Equals(aaa, "06/30") 

a devolverá falso.