Comparando Sequências de Caracteres
O .NET Framework fornece vários métodos para comparar os valores de sequências de caracteres. A tabela a seguir lista e descreve os métodos de comparação de valor.
Nome do Método |
Uso |
---|---|
Compara os valores das duas sequências de caracteres. Retorna um valor inteiro. |
|
Compara duas sequências sem considerar a cultura local. Retorna um valor inteiro. |
|
Compara o objeto atual de sequência de caracteres com outra sequência de caracteres. Retorna um valor inteiro. |
|
Determina se uma sequência de caracteres começa com a sequência passada. Retorna um valor Boolean. |
|
Determina se uma sequência de caracteres termina com a sequência passada. Retorna um valor Boolean. |
|
Determina se duas sequências são iguais. Retorna um valor Boolean. |
|
Retorna a posição do índice de um caractere ou sequência, começando do início da sequência de caracteres que você está examinando. Retorna um valor inteiro. |
|
Retorna a posição do índice de um caractere ou sequência, começando do início da sequência de caracteres que você está examinando. Retorna um valor inteiro. |
Compare
O método String.Compare fornece uma maneira completa de comparar o objeto atual de sequência de caracteres com outro objeto ou sequência de caracteres. Este método é culturalmente consciente. Você pode usar essa função para comparar duas sequências ou subsequências de duas sequências de caracteres. Além disso, sobrecargas são fornecidas para considerar ou ignorar ocorrência e variação cultural. A tabela a seguir mostra os três valores inteiros que podem ser retornados por esse método.
Tipos de valor |
Condição |
---|---|
Um inteiro negativo |
strA é menor que strB . |
0 |
strA é igual a strB . |
Um número inteiro positivo - ou - 1 |
Esta instância é maior do que valor . - ou - Valor é uma referência nula ( Nothing no Visual Basic). |
Importante |
---|
O método Compare é destinado principalmente para uso em ordenação ou classificação de sequências de caracteres.Você não deve usar o método Compare para testar a igualdade (ou seja, para procurar um valor de retorno de 0 com nenhuma relação para se explicitamente uma sequência de caracteres é menor que ou maior que o outro).Em vez disso, para determinar se duas sequências de caracteres são iguais, use o método String.Equals(String, String, StringComparison). |
O exemplo a seguir usa o método Compare para determinar os valores relativos das duas sequências de caracteres.
Dim MyString As String = "Hello World!"
Console.WriteLine(String.Compare(MyString, "Hello World?"))
string MyString = "Hello World!";
Console.WriteLine(String.Compare(MyString, "Hello World?"));
String^ MyString = "Hello World!";
Console::WriteLine(String::Compare(MyString, "Hello World?"));
Este exemplo exibe -1 no console.
O exemplo anterior é sensível à cultura por padrão. Para realizar uma comparação de sequências sem levar em conta a cultura, use uma sobrecarga do método String.Compare que permita que você a especificar a cultura a ser usada, fornecendo um parâmetro cultura. Para um exemplo que demonstre como usar o método String.Compare para realizar uma comparação sem levar em conta a cultura, consulte Fazendo comparações de sequências sem levar em conta a culture.
CompareOrdinal
O método String.CompareOrdinal compara dois objetos de sequência de caracteres sem considerar a cultura local. Os valores de retorno desse método são idênticos aos valores retornados pelo método Compare na tabela anterior.
Importante |
---|
O método CompareOrdinal é destinado principalmente para uso em ordenação ou classificação de sequências de caracteres.Você não deve usar o método CompareOrdinal para testar a igualdade (ou seja, para procurar um valor de retorno de 0 com nenhuma relação para se explicitamente uma sequência de caracteres é menor que ou maior que o outro).Em vez disso, para determinar se duas sequências de caracteres são iguais, use o método String.Equals(String, String, StringComparison). |
O exemplo a seguir usa o método CompareOrdinal para comparar os valores de duas sequências de caracteres.
Dim MyString As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(MyString, "hello world!"))
string MyString = "Hello World!";
Console.WriteLine(String.CompareOrdinal(MyString, "hello world!"));
String^ MyString = "Hello World!";
Console::WriteLine(String::CompareOrdinal(MyString, "hello world!"));
Este exemplo exibe -32 no console.
CompareTo
O método String.CompareTo compara a sequência de caracteres que o atual objeto de sequência de caracteres encapsula a outro objeto ou sequência. Os valores de retorno desse método são idênticos aos valores retornados pelo método Compare na tabela anterior.
Importante |
---|
O método CompareTo é destinado principalmente para uso em ordenação ou classificação de sequências de caracteres.Você não deve usar o método CompareTo para testar a igualdade (ou seja, para procurar um valor de retorno de 0 com nenhuma relação para se explicitamente uma sequência de caracteres é menor que ou maior que o outro).Em vez disso, para determinar se duas sequências de caracteres são iguais, use o método String.Equals(String, String, StringComparison). |
O exemplo a seguir usa o método CompareTo para comparar o objeto MyString com o objeto OtherString.
Dim MyString As String = "Hello World!"
Dim OtherString As String = "Hello World!"
Dim MyInt As Integer = MyString.CompareTo(OtherString)
Console.WriteLine( MyInt )
string MyString = "Hello World";
string OtherString = "Hello World!";
int MyInt = MyString.CompareTo(OtherString);
Console.WriteLine( MyInt );
String^ MyString = "Hello World";
String^ OtherString = "Hello World!";
int MyInt = MyString->CompareTo(OtherString);
Console::WriteLine( MyInt );
Este exemplo exibe 1 no console.
Todas as sobrecargas do método String.CompareTo executam comparações que levam em conta a cultura e diferenciam maiúsculas de minúsculas por padrão. Nenhuma das sobrecargas fornecidas desse método permitem que você realize uma comparação que não leve em conta a cultura. Para que o código fique claro, é recomendável que você use o método String.Compare, especificando CultureInfo.CurrentCulture para operações que levem em conta a cultura ou CultureInfo.InvariantCulture para operações que não levem em conta a cultura. Para obter exemplos que demonstram como usar o método String.Compare para realizar comparações que levam e que não levam em conta a cultura, consulte Fazendo comparações de sequências que não levam em conta a cultura.
Equals
O método String.Equals pode facilmente determinar se duas sequências são iguais. Esse método que apresenta distinção entre maiúsculas e minúsculas retorna um valor booleano True ou False. Ele pode ser usado a partir de uma classe existente, conforme ilustrado no exemplo a seguir. O exemplo a seguir usa o método Equals para determinar se um objeto de sequência de caracteres contém a frase " Hello World ".
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.Equals("Hello World"))
string MyString = "Hello World";
Console.WriteLine(MyString.Equals("Hello World"));
String^ MyString = "Hello World";
Console::WriteLine(MyString->Equals("Hello World"));
Este exemplo exibe True no console.
Esse método também pode ser usado como um método estático. O exemplo a seguir compara dois objetos de sequência de caracteres usando um método estático.
Dim MyString As String = "Hello World!"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))
string MyString = "Hello World";
string YourString = "Hello World";
Console.WriteLine(String.Equals(MyString, YourString));
String^ MyString = "Hello World";
String^ YourString = "Hello World";
Console::WriteLine(String::Equals(MyString, YourString));
Este exemplo exibe True no console.
StartsWith e EndsWith
Você pode usar o método String.StartsWith para determinar se um objeto de sequência de caracteres começa com os mesmos caracteres que englobam outra sequência. Esse método que diferencia maiúsculas de minúsculas retorna True se o atual objeto de sequência de caracteres começa com a sequência de caracteres passada e False se ele não começa. O exemplo a seguir usa esse método para determinar se um objeto de sequência de caracteres começa com "Hello".
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.StartsWith("Hello"))
string MyString = "Hello World";
Console.WriteLine(MyString.StartsWith("Hello"));
String^ MyString = "Hello World";
Console::WriteLine(MyString->StartsWith("Hello"));
Este exemplo exibe True no console.
O método String.EndsWith compara uma sequência passada com os caracteres que existem no final do objeto de sequência de caracteres atual. Ele também retorna um valor Booleano. O exemplo a seguir verifica o fim de uma sequência de caracteres usando o método EndsWith.
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.EndsWith("Hello"))
string MyString = "Hello World";
Console.WriteLine(MyString.EndsWith("Hello"));
String^ MyString = "Hello World";
Console::WriteLine(MyString->EndsWith("Hello"));
Este exemplo exibe False para o console.
IndexOf e 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 sequência. Este método que diferencia maiúsculas de minúsculas inicia a contagem do início de uma sequência de caracteres e retorna a posição de um caractere passado usando um índice com base zero. Se o caractere não pode ser localizado, será retornado um valor de – 1.
O exemplo a seguir usa o método IndexOf para procurar a primeira ocorrência do caractere 'l' em uma sequência de caracteres.
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.IndexOf("l"))
string MyString = "Hello World";
Console.WriteLine(MyString.IndexOf('l'));
String^ MyString = "Hello World";
Console::WriteLine(MyString->IndexOf('l'));
Este exemplo exibe 2 no console.
O método String.LastIndexOf é semelhante ao método String.IndexOf exceto pelo fato de que ela retorna a posição da última ocorrência de um determinado caractere dentro de uma sequência. Ele diferencia maiúsculas de minúsculas e usa um índice com base zero.
O exemplo a seguir usa o método LastIndexOf para procurar a primeira ocorrência do caractere 'l' em uma sequência de caracteres.
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.LastIndexOf("l"))
string MyString = "Hello World";
Console.WriteLine(MyString.LastIndexOf('l'));
String^ MyString = "Hello World";
Console::WriteLine(MyString->LastIndexOf('l'));
Este exemplo exibe 9 no console.
Os dois métodos são úteis quando usados em conjunto com o método String.Remove. Você pode usar ambos os métodos IndexOf ou LastIndexOf para recuperar a posição de um caractere e em seguida, fornecer essa posição ao método Remove para remover um caractere ou uma palavra que começa com esse caractere.
Consulte também
Outros recursos
Operações Básicas com Sequências de Caracteres
Executar operações de cadeia de caracteres com diferenciação de cultura