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
- Práticas recomendadas para usar cadeias de caracteres no .NET
- Operações básicas de cadeia de caracteres
- Executar operações de cadeia de caracteres que não diferenciam a cultura
- Classificando tabelas de peso - usadas pelo .NET Framework e pelo .NET Core 1.0-3.1 no Windows
- Tabela de elementos de agrupamento Unicode padrão - usada pelo .NET 5 em todas as plataformas e pelo .NET Core no Linux e macOS