Partilhar via


Realizar comparações de seqüência de caracteres com diferenciação de cultura

Por padrão, o String.Compare método executa comparações diferenciam maiúsculas de minúsculas e de cultura. Esse método também inclui várias sobrecargas que fornecem um culture parâmetro permite especificar a cultura a ser usada, e um comparisonType parâmetro que permite especificar as regras de comparação para uso. Chamar esses métodos em vez da sobrecarga de padrão remove qualquer ambigüidade sobre as regras usadas em uma chamada de método em particular e o torna claro se é de uma comparação de determinada cultura ou a diferenciação de cultura.

Observação

Ambas sobrecargas da String.CompareTo método executar comparações de cultura e diferencia maiúsculas de minúsculas; é possível usar esse método para realizar comparações de diferenciação de cultura.Para maior clareza do código, recomendamos que você use o String.Compare método em vez disso.

Para operações de cultura, especifique o StringComparison.CurrentCulture ou StringComparison.CurrentCultureIgnoreCase o valor de enumeração como o comparisonType parâmetro. Se você quiser realizar uma comparação de cultura, usando uma cultura designada diferente, por exemplo, a cultura atual, especifique o CultureInfo o objeto que representa essa cultura, como o culture parâmetro.

As comparações de seqüência de caracteres com diferenciação de cultura com suporte a String.Compare método estão lingüística (com base nas convenções de classificação da cultura invariável) ou não lingüísticos (com base no valor ordinal dos caracteres na seqüência de caracteres). Mais comparações de seqüência de caracteres com diferenciação de cultura são não-lingüísticas. Essas comparações, especifique o StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase o valor de enumeração como o comparisonType parâmetro. Por exemplo, se uma decisão de segurança (como uma comparação de nome ou senha de usuário) é baseada no resultado de uma comparação de seqüência de caracteres, a operação deve ser insensível à cultura e não lingüísticos para garantir que o resultado não é afetado pelas conventions de um idioma ou cultura específica. (Consulte Mapeamentos de maiúsculas personalizados e regras de classificação para obter um exemplo que demonstra como cultura de seqüência de caracteres comparações podem produzir resultados inconsistentes.)

Se você deseja manipular seqüências de caracteres de lingüisticamente relevantes de várias culturas de maneira consistente, use a comparação de seqüência de caracteres com diferenciação de cultura lingüística. Por exemplo, se seu aplicativo exibe palavras que usa vários caracteres define em uma caixa de lista, talvez você queira exibir palavras na mesma ordem, independentemente da cultura atual. Para comparações de diferenciação de cultura lingüísticas, o.NET Framework define uma cultura invariável, baseia-se nas convenções lingüísticas do inglês. Para realizar uma comparação lingüística diferenciação de cultura, especifique StringComparison.InvariantCulture ou StringComparison.InvariantCultureIgnoreCase como o comparisonType parâmetro.

O exemplo a seguir executa duas comparações de seqüência de caracteres com diferenciação de cultura-lingüísticas. A primeira é diferencia maiúsculas de minúsculas, mas não o segundo.

Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer

        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)   
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult) 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult) 
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult); 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult); 
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Consulte também

Referência

String.Compare

String.CompareTo

Conceitos

Comparar e classificar dados para uma cultura específica

Práticas recomendadas para o uso de cadeias de caracteres na.NET Framework

Outros recursos

Executar operações de cadeia de caracteres com diferenciação de cultura

Histórico de alterações

Date

History

Motivo

Maio de 2010

Revisado para refletir as práticas recomendadas para a manipulação de cadeias de caracteres.

Correção de bug de conteúdo.