Comparando cadeias de caracteres em .NETComparing Strings in .NET

O .NET fornece vários métodos para comparar os valores de cadeias de caracteres..NET provides several methods to compare the values of strings. A tabela a seguir lista e descreve os métodos de comparação de valores.The following table lists and describes the value-comparison methods.

Nome do métodoMethod name UseUse
String.Compare Compara os valores das duas cadeias de caracteres.Compares the values of two strings. Retorna um valor inteiro.Returns an integer value.
String.CompareOrdinal Compara duas cadeias de caracteres sem considerar a cultura local.Compares two strings without regard to local culture. Retorna um valor inteiro.Returns an integer value.
String.CompareTo Compara o objeto atual de cadeia de caracteres a outra cadeia de caracteres.Compares the current string object to another string. Retorna um valor inteiro.Returns an integer value.
String.StartsWith Determina se uma cadeia de caracteres começa com a cadeia de caracteres passada.Determines whether a string begins with the string passed. Representa um valor Booliano.Returns a Boolean value.
String.EndsWith Determina se uma cadeia de caracteres termina com a cadeia de caracteres passada.Determines whether a string ends with the string passed. Representa um valor Booliano.Returns a Boolean value.
String.Equals Determina se duas cadeias de caracteres são iguais.Determines whether two strings are the same. Representa um valor Booliano.Returns a Boolean value.
String.IndexOf Retorna a posição do índice de um caractere ou uma cadeia de caracteres, começando do início da cadeia de caracteres que você está examinando.Returns the index position of a character or string, starting from the beginning of the string you are examining. Retorna um valor inteiro.Returns an integer value.
String.LastIndexOf Retorna a posição do índice de um caractere ou uma cadeia de caracteres, começando do fim da cadeia de caracteres que você está examinando.Returns the index position of a character or string, starting from the end of the string you are examining. Retorna um valor inteiro.Returns an integer value.

CompararCompare

O método estático String.Compare fornece uma maneira completa de comparar duas cadeias de caracteres.The static String.Compare method provides a thorough way of comparing two strings. Esse método é cultural.This method is culturally aware. Você pode usar essa função para comparar duas cadeias de caracteres ou subcadeias de duas cadeias de caracteres.You can use this function to compare two strings or substrings of two strings. Além disso, sobrecargas são fornecidas para considerar ou ignorar a variação cultural ou de caso.Additionally, overloads are provided that regard or disregard case and cultural variance. A tabela a seguir mostra os três valores inteiros que esse método pode retornar.The following table shows the three integer values that this method might return.

Valor retornadoReturn value CondiçãoCondition
Um inteiro negativoA negative integer A primeira cadeia de caracteres precede a segunda cadeia de caracteres na ordem de classificação.The first string precedes the second string in the sort order.

- ou --or-

A primeira cadeia de caracteres é null.The first string is null.
00 A primeira cadeia de caracteres e a segunda cadeia de caracteres são iguais.The first string and the second string are equal.

- ou --or-

Ambas as cadeias de caracteres são null.Both strings are null.
Um inteiro positivoA positive integer

- ou --or-

11
A primeira cadeia de caracteres segue a segunda cadeia de caracteres na ordem de classificação.The first string follows the second string in the sort order.

- ou --or-

A segunda cadeia de caracteres é null.The second string is null.

Importante

O método String.Compare destina-se principalmente para uso em ordenação ou classificação de cadeias de caracteres.The String.Compare method is primarily intended for use when ordering or sorting strings. Você não deve usar o método String.Compare para testar a igualdade (ou seja, para procurar explicitamente um valor retornado de 0 sem considerar se uma cadeia de caracteres é menor que ou maior que a outra).You should not use the String.Compare method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o método String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

O exemplo a seguir usa o método String.Compare para determinar os valores relativos das duas cadeias de caracteres.The following example uses the String.Compare method to determine the relative values of two strings.

String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

Este exemplo exibe -1 no console.This example displays -1 to the console.

O exemplo anterior diferencia a cultura por padrão.The preceding example is culture-sensitive by default. Para realizar uma comparação de cadeia de caracteres que não diferencia a cultura, use uma sobrecarga do método String.Compare que permite que você especifique a cultura a ser usada, fornecendo um parâmetro culture.To perform a culture-insensitive string comparison, use an overload of the String.Compare method that allows you to specify the culture to use by supplying a culture parameter. Confira um exemplo que demonstra como usar o método String.Compare para realizar uma comparação de cadeia de caracteres que não diferenciam a cultura em Executando comparações de cadeias de caracteres que não diferenciam a cultura.For an example that demonstrates how to use the String.Compare method to perform a culture-insensitive comparison, see Performing Culture-Insensitive String Comparisons.

CompareOrdinalCompareOrdinal

O método String.CompareOrdinal compara dois objetos de cadeia de caracteres sem considerar a cultura local.The String.CompareOrdinal method compares two string objects without considering the local culture. Os valores de retorno desse método são idênticos aos valores retornados pelo método Compare na tabela anterior.The return values of this method are identical to the values returned by the Compare method in the previous table.

Importante

O método String.CompareOrdinal destina-se principalmente para uso em ordenação ou classificação de cadeias de caracteres.The String.CompareOrdinal method is primarily intended for use when ordering or sorting strings. Você não deve usar o método String.CompareOrdinal para testar a igualdade (ou seja, para procurar explicitamente um valor retornado de 0 sem considerar se uma cadeia de caracteres é menor que ou maior que a outra).You should not use the String.CompareOrdinal method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o método String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

O exemplo a seguir usa o método CompareOrdinal para comparar os valores de duas cadeias de caracteres.The following example uses the CompareOrdinal method to compare the values of two strings.

String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

Este exemplo exibe -32 no console.This example displays -32 to the console.

CompareToCompareTo

O método String.CompareTo compara a cadeia de caracteres que o objeto atual de cadeia de caracteres encapsula com outro objeto ou cadeia de caracteres.The String.CompareTo method compares the string that the current string object encapsulates to another string or object. Os valores de retorno desse método são idênticos aos valores retornados pelo método String.Compare na tabela anterior.The return values of this method are identical to the values returned by the String.Compare method in the previous table.

Importante

O método String.CompareTo destina-se principalmente para uso em ordenação ou classificação de cadeias de caracteres.The String.CompareTo method is primarily intended for use when ordering or sorting strings. Você não deve usar o método String.CompareTo para testar a igualdade (ou seja, para procurar explicitamente um valor retornado de 0 sem considerar se uma cadeia de caracteres é menor que ou maior que a outra).You should not use the String.CompareTo method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o método String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

O exemplo a seguir usa o método String.CompareTo para comparar o objeto string1 ao objeto string2.The following example uses the String.CompareTo method to compare the string1 object to the string2 object.

String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

Este exemplo exibe -1 no console.This example displays -1 to the console.

Todas as sobrecargas do método String.CompareTo executam comparações que diferenciam a cultura e com diferenciação de maiúsculas e minúsculas por padrão.All overloads of the String.CompareTo method perform culture-sensitive and case-sensitive comparisons by default. Nenhuma sobrecarga desse método é fornecida que permite que você execute uma comparação sem diferenciação de cultura.No overloads of this method are provided that allow you to perform a culture-insensitive comparison. Para ter maior clareza do código, é recomendável usar o método String.Compare, especificando CultureInfo.CurrentCulture para operações que diferenciam a cultura ou CultureInfo.InvariantCulture para operações que não diferenciam a cultura.For code clarity, we recommend that you use the String.Compare method instead, specifying CultureInfo.CurrentCulture for culture-sensitive operations or CultureInfo.InvariantCulture for culture-insensitive operations. Confira exemplos que demonstram como usar o método String.Compare para realizar comparações de cadeia de caracteres que diferenciam a cultura e não em Executando comparações de cadeias de caracteres que não diferenciam a cultura.For examples that demonstrate how to use the String.Compare method to perform both culture-sensitive and culture-insensitive comparisons, see Performing Culture-Insensitive String Comparisons.

Igual aEquals

O método String.Equals pode facilmente determinar se duas cadeias de caracteres são as mesmas.The String.Equals method can easily determine if two strings are the same. Esse método que diferencia maiúsculas de minúsculas retorna um valor Booliano true ou false.This case-sensitive method returns a true or false Boolean value. Ele pode ser usado de uma classe existente, conforme ilustrado no exemplo a seguir.It can be used from an existing class, as illustrated in the next example. O exemplo a seguir usa o método Equals para determinar se um objeto de cadeia de caracteres contém a frase "Hello World".The following example uses the Equals method to determine whether a string object contains the phrase "Hello World".

String^ string1 = "Hello World";
Console::WriteLine(string1->Equals("Hello World"));
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

Este exemplo exibe True no console.This example displays True to the console.

Esse método também pode ser usado como um método estático.This method can also be used as a static method. O exemplo a seguir compara dois objetos de cadeia de caracteres usando um método estático.The following example compares two string objects using a static method.

String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

Este exemplo exibe True no console.This example displays True to the console.

StartsWith e EndsWithStartsWith and EndsWith

Você pode usar o método String.StartsWith para determinar se um objeto de cadeia de caracteres começa com os mesmos caracteres que englobam outra cadeia de caracteres.You can use the String.StartsWith method to determine whether a string object begins with the same characters that encompass another string. Esse método que diferencia maiúsculas de minúsculas retorna true se o objeto atual de cadeia de caracteres começa com a cadeia de caracteres passada e false se não existir.This case-sensitive method returns true if the current string object begins with the passed string and false if it does not. O exemplo a seguir usa esse método para determinar se um objeto de cadeia de caracteres começa com "Hello".The following example uses this method to determine if a string object begins with "Hello".

String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

Este exemplo exibe True no console.This example displays True to the console.

O método String.EndsWith compara uma cadeia de caracteres passada com os caracteres que existem no final do objeto de cadeia de caracteres atual.The String.EndsWith method compares a passed string to the characters that exist at the end of the current string object. Ele também retorna um valor Booliano.It also returns a Boolean value. O exemplo a seguir verifica o fim de uma cadeia de caracteres usando o método EndsWith.The following example checks the end of a string using the EndsWith method.

String^ string1 = "Hello World";
Console::WriteLine(string1->EndsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

Este exemplo exibe False no console.This example displays False to the console.

IndexOf e LastIndexOfIndexOf and LastIndexOf

Você pode usar o método String.IndexOf para determinar a posição da primeira ocorrência de um determinado caractere dentro de uma cadeia de caracteres.You can use the String.IndexOf method to determine the position of the first occurrence of a particular character within a string. Esse método que diferencia maiúsculas de minúsculas inicia a contagem do início de uma cadeia de caracteres e retorna a posição de um caractere passado usando um índice baseado em zero.This case-sensitive method starts counting from the beginning of a string and returns the position of a passed character using a zero-based index. Se o caractere não for encontrado, um valor de -1 será retornado.If the character cannot be found, a value of –1 is returned.

O exemplo a seguir usa o método IndexOf para pesquisar a primeira ocorrência do caractere 'l' em uma cadeia de caracteres.The following example uses the IndexOf method to search for the first occurrence of the 'l' character in a string.

String^ string1 = "Hello World";
Console::WriteLine(string1->IndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

Este exemplo exibe 2 no console.This example displays 2 to the console.

O método String.LastIndexOf é semelhante ao método String.IndexOf, exceto que ele retorna a posição da última ocorrência de um determinado caractere dentro de uma cadeia de caracteres.The String.LastIndexOf method is similar to the String.IndexOf method except that it returns the position of the last occurrence of a particular character within a string. Ele diferencia maiúsculas de minúsculas e usa um índice baseado em zero.It is case-sensitive and uses a zero-based index.

O exemplo a seguir usa o método LastIndexOf para pesquisar a última ocorrência do caractere 'l' em uma cadeia de caracteres.The following example uses the LastIndexOf method to search for the last occurrence of the 'l' character in a string.

String^ string1 = "Hello World";
Console::WriteLine(string1->LastIndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

Este exemplo exibe 9 no console.This example displays 9 to the console.

Os dois métodos são úteis quando usados em conjunto com o método String.Remove.Both methods are useful when used in conjunction with the String.Remove method. Você pode usar tanto o método IndexOf quanto o LastIndexOf para recuperar a posição de um caractere e, em seguida, fornecer essa posição para o método Remove para remover um caractere ou uma palavra que começa com esse caractere.You can use either the IndexOf or LastIndexOf methods to retrieve the position of a character, and then supply that position to the Remove method in order to remove a character or a word that begins with that character.

Consulte tambémSee also