Partilhar via


Comparar cadeias de caracteres no .NET

O .NET fornece vários métodos para comparar os valores de cadeias de caracteres. A tabela a seguir lista e descreve os métodos de comparação de valores.

Nome do método Utilizar
String.Compare Compara os valores de duas cadeias de caracteres. Retorna um valor inteiro.
String.CompareOrdinal Compara duas cordas sem levar em conta a cultura local. Retorna um valor inteiro.
String.CompareTo Compara o objeto de cadeia de caracteres atual com outra cadeia de caracteres. Retorna um valor inteiro.
String.StartsWith Determina se uma cadeia de caracteres começa com a cadeia de caracteres passada. Retorna um valor booleano.
String.EndsWith Determina se uma cadeia de caracteres termina com a cadeia de caracteres passada. Retorna um valor booleano.
String.Contains Determina se um caractere ou cadeia de caracteres ocorre dentro de outra cadeia de caracteres. Retorna um valor booleano.
String.Equals Determina se duas cadeias de caracteres são iguais. Retorna um valor booleano.
String.IndexOf Retorna a posição do índice de um caractere ou cadeia de caracteres, começando a partir do início da cadeia de caracteres que você está examinando. Retorna um valor inteiro.
String.LastIndexOf Retorna a posição do índice de um caractere ou cadeia de caracteres, começando a partir do final da cadeia de caracteres que você está examinando. Retorna um valor inteiro.

Compare método

O método estático String.Compare fornece uma maneira completa de comparar duas cadeias de caracteres. Este método é culturalmente consciente. Você pode usar essa função para comparar duas cadeias de caracteres ou substrings de duas strings. Além disso, são fornecidas sobrecargas que consideram ou desconsideram caso e variação cultural. A tabela a seguir mostra os três valores inteiros que esse método pode retornar.

Valor devolvido Condição
Um inteiro negativo A primeira cadeia de caracteres precede a segunda cadeia de caracteres na ordem de classificação.

-or-

A primeira string é null.
0 A primeira string e a segunda string são iguais.

-or-

Ambas as cadeias de caracteres são null.
Um número inteiro positivo

-or-

1
A primeira cadeia de caracteres segue a segunda cadeia de caracteres na ordem de classificação.

-or-

A segunda string é null.

Importante

O String.Compare método destina-se principalmente ao uso ao ordenar ou classificar cadeias de caracteres. Você não deve usar o String.Compare método para testar a igualdade (ou seja, procurar explicitamente um valor de retorno de 0 sem considerar se uma cadeia de caracteres é menor ou maior que a outra). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o String.Equals(String, String, StringComparison) método.

O exemplo a seguir usa o String.Compare método para determinar os valores relativos de duas cadeias de caracteres.

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 é exibido -1 no console.

O exemplo anterior é sensível à cultura por padrão. Para executar uma comparação de cadeia de caracteres que não diferencia cultura, use uma sobrecarga do String.Compare método que permite especificar a cultura a ser usada fornecendo um parâmetro culture . Para obter um exemplo que demonstra como usar o String.Compare método para executar uma comparação insensível à cultura, consulte Comparações de cadeia de caracteres insensíveis à cultura.

CompareOrdinal método

O String.CompareOrdinal método compara dois objetos de cadeia de caracteres sem considerar a cultura local. Os valores de retorno desse método são idênticos aos valores retornados pelo Compare método na tabela anterior.

Importante

O String.CompareOrdinal método destina-se principalmente ao uso ao ordenar ou classificar cadeias de caracteres. Você não deve usar o String.CompareOrdinal método para testar a igualdade (ou seja, procurar explicitamente um valor de retorno de 0 sem considerar se uma cadeia de caracteres é menor ou maior que a outra). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o String.Equals(String, String, StringComparison) método.

O exemplo a seguir usa o CompareOrdinal método para comparar os valores de duas cadeias de caracteres.

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 é exibido -32 no console.

CompareTo método

O String.CompareTo método compara a cadeia de caracteres que o objeto de cadeia de caracteres atual encapsula com outra cadeia de caracteres ou objeto. Os valores de retorno desse método são idênticos aos valores retornados pelo String.Compare método na tabela anterior.

Importante

O String.CompareTo método destina-se principalmente ao uso ao ordenar ou classificar cadeias de caracteres. Você não deve usar o String.CompareTo método para testar a igualdade (ou seja, procurar explicitamente um valor de retorno de 0 sem considerar se uma cadeia de caracteres é menor ou maior que a outra). Em vez disso, para determinar se duas cadeias de caracteres são iguais, use o String.Equals(String, String, StringComparison) método.

O exemplo a seguir usa o String.CompareTo método para comparar o string1 objeto com o string2 objeto.

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 é exibido -1 no console.

Todas as sobrecargas do método executam comparações sensíveis à String.CompareTo cultura e às maiúsculas e minúsculas por padrão. Não são fornecidas sobrecargas desse método que permitem que você execute uma comparação insensível à cultura. Para maior clareza do código, recomendamos que você use o String.Compare método em vez disso, especificando CultureInfo.CurrentCulture para operações sensíveis à cultura ou CultureInfo.InvariantCulture para operações que não diferenciam a cultura. Para obter exemplos que demonstram como usar o String.Compare método para executar comparações sensíveis à cultura e insensíveis à cultura, consulte Executando comparações de cadeia de caracteres insensíveis à cultura.

Equals método

O String.Equals método pode facilmente determinar se duas cadeias de caracteres são iguais. Esse método que diferencia maiúsculas de minúsculas retorna um true valor ou false booleano. Ele pode ser usado a partir de uma classe existente, como ilustrado no próximo exemplo. O exemplo a seguir usa o Equals método para determinar se um objeto string contém a frase "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 é exibido True no console.

Este método também pode ser usado como um método estático. O exemplo a seguir compara dois objetos string usando um método estático.

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 é exibido True no console.

StartsWith e EndsWith métodos

Você pode usar o String.StartsWith método para determinar se um objeto de cadeia de caracteres começa com os mesmos caracteres que englobam outra cadeia de caracteres. Esse método que diferencia maiúsculas de minúsculas retornará true se o objeto de cadeia de caracteres atual começar com a cadeia de caracteres passada e false se não começar. O exemplo a seguir usa esse método para determinar se um objeto string começa com "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 é exibido True no console.

O String.EndsWith método compara uma cadeia de caracteres passada com os caracteres que existem no final do objeto de cadeia de caracteres atual. Ele também retorna um valor booleano. O exemplo a seguir verifica o final de uma cadeia de caracteres usando o EndsWith método.

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 é exibido False no console.

IndexOf e LastIndexOf métodos

Você pode usar o String.IndexOf método para determinar a posição da primeira ocorrência de um caractere específico dentro de uma cadeia de caracteres. Esse método que diferencia maiúsculas de minúsculas começa a contar a partir do início de uma cadeia de caracteres e retorna a posição de um caractere passado usando um índice baseado em zero. Se o caractere não puder ser encontrado, um valor de –1 será retornado.

O exemplo a seguir usa o IndexOf método para procurar a primeira ocorrência do caractere 'l' em uma cadeia de caracteres.

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 é exibido 2 no console.

O String.LastIndexOf método é semelhante ao método, String.IndexOf exceto que ele retorna a posição da última ocorrência de um caractere específico dentro de uma cadeia de caracteres. Ele diferencia maiúsculas de minúsculas e usa um índice baseado em zero.

O exemplo a seguir usa o LastIndexOf método para procurar a última ocorrência do caractere 'l' em uma cadeia de caracteres.

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 é exibido 9 no console.

Ambos os métodos são úteis quando usados em conjunto com o String.Remove método. Você pode usar os IndexOf métodos ou LastIndexOf para recuperar a posição de um caractere e, em seguida, fornecer essa posição para o Remove método para remover um caractere ou uma palavra que começa com esse caractere.

Consulte também