Compartilhar via


Como a cultura afeta seqüências de caracteres em Visual Basic

Esta página de Ajuda discute como Visual Basic usa informações para executar conversões de seqüência de caracteres e comparações de cultura.

Quando usar seqüências de caracteres específicos da cultura

Normalmente, você deve usar seqüências de caracteres específicos da cultura para todos os dados apresentados ao ler a partir de usuários e usar seqüências de caracteres de cultura-invariável para os dados do aplicativo interno.

Por exemplo, se seu aplicativo solicita aos usuários que insere uma data como uma seqüência de caracteres, ele deve esperar que os usuários para formatar as seqüências de acordo com a sua cultura e o aplicativo deve converter a seqüência de caracteres corretamente.Se o seu aplicativo, em seguida, apresenta a data na interface do usuário, ele deve apresentá-lo na cultura do usuário.

No entanto, se o aplicativo carrega a data para um servidor central, ele deve formatar a seqüência de acordo com uma cultura específica, para evitar confusão entre formatos de data potencialmente diferentes.

Funções de cultura

Todas as Visual Basic funções de conversão de seqüência de caracteres (exceto para o Str e Val funções) usar informações de cultura do aplicativo para certificar-se de que as conversões e comparações são apropriadas para a cultura do usuário do aplicativo.

A chave com êxito usando as funções de conversão de seqüência de caracteres em aplicativos executados em computadores com configurações de cultura diferente é entender quais funções usarem uma configuração de cultura específica e que use a configuração de cultura atual.Observe que as configurações de cultura do aplicativo são, por padrão, herdadas de configurações de cultura do sistema operacional.For more information, see Asc, AscW, Chr, ChrW, Format, Hex, Oct, and Funções de conversão de tipo (Visual Basic).

O Str (converte números em cadeias de caracteres) e Val funções (converte seqüências para números) não usam informações de cultura do aplicativo ao converter entre cadeias de caracteres e números.Em vez disso, eles reconhecem somente o ponto (.) como separador decimal válido.As semelhanças culturalmente cientes dessas funções são:

  • Conversões que usam a cultura atual. O CStr e Format funções convertem um número em uma seqüência de caracteres e o CDbl e CInt funções convertem uma seqüência de caracteres em um número.

  • Conversões que usam uma cultura específica. Cada objeto number tem um ToString(IFormatProvider) método que converte um número em uma seqüência de caracteres, e um Parse(String, IFormatProvider) método converte uma seqüência de caracteres em um número.Por exemplo, o Double tipo fornece a ToString(IFormatProvider) e Parse(String, IFormatProvider) métodos.

Para obter mais informações, consulte Str e Val.

Usando uma cultura específica

Imagine que você está desenvolvendo um aplicativo que envia uma data (formatada como uma seqüência de caracteres) para um serviço da Web.Nesse caso, o aplicativo deve usar uma cultura específica para a conversão de seqüência de caracteres.Para ilustrar o porquê, considere o resultado do uso da data ToString() método: se o seu aplicativo usa esse método para formatar a data de 4 de julho de 2005, ele retornará "4/7/2005 12: 00: 00 AM" ao ser executado com a cultura dos Estados Unidos Inglês (en-US), mas ele retorna "04.07.2005 00: 00: 00" ao ser executado com a cultura de alemão (de-DE).

Quando você precisa executar uma conversão de seqüência de caracteres em um formato de cultura específica, você deve usar o CultureInfo classe incorporada ao .NET Framework.Você pode criar uma nova CultureInfo o objeto para uma cultura específica, passando o nome da cultura para o CultureInfo construtor.Os nomes de cultura com suporte são listados na CultureInfo página de Ajuda da classe.

Como alternativa, você pode obter uma instância da cultura invariável partir do CultureInfo.InvariantCulture propriedade.A cultura invariável baseia-se na cultura em inglês, mas existem algumas diferenças.Por exemplo, a cultura invariável Especifica um relógio de 24 horas em vez de um relógio de 12 horas.

Para converter uma data para seqüência de caracteres da cultura, passe o CultureInfo o objeto para o objeto de data ToString(IFormatProvider) método.Por exemplo, o código a seguir exibe "07/04/2005 00: 00: 00", independentemente das configurações de cultura do aplicativo.

Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
ObservaçãoObservação

Literais de data sempre são interpretados de acordo com a cultura em inglês.

Comparando Sequências de Caracteres

Há duas situações importantes onde comparações de seqüência de caracteres são necessários:

  • A classificação de dados para exibição ao usuário. Use operações com base na cultura atual para que as seqüências de caracteres a classificação apropriadamente.

  • Determinar se duas seqüências de caracteres de aplicativos internas corresponderem exatamente (geralmente para fins de segurança). Use operações desconsiderar a cultura atual.

Você pode executar os dois tipos de comparações com o Visual BasicStrComp função. Especificar o opcional Compare argumento para controlar o tipo de comparação: Text para a maioria de entrada e saída Binary para determinar as correspondências exatas.

O StrComp função retorna um número inteiro que indica a relação entre as duas seqüências de caracteres comparadas com base na ordem de classificação.Um valor positivo para o resultado indica que a primeira seqüência de caracteres é maior que a segunda seqüência de caracteres.Um resultado negativo indica a primeira seqüência de caracteres é menor, e zero indica a igualdade entre as seqüências de caracteres.

' Defines variables.
Dim TestStr1 As String = "ABCD"
Dim TestStr2 As String = "abcd"
Dim TestComp As Integer
' The two strings sort equally. Returns 0.
TestComp = StrComp(TestStr1, TestStr2, CompareMethod.Text)
' TestStr1 sorts before TestStr2. Returns -1.
TestComp = StrComp(TestStr1, TestStr2, CompareMethod.Binary)
' TestStr2 sorts after TestStr1. Returns 1.
TestComp = StrComp(TestStr2, TestStr1, CompareMethod.Binary)

Você também pode usar o .NET Framework partner of a StrComp função, o String.Compare método.Este é um método sobrecarregado estático da classe string base.O exemplo a seguir ilustra como esse método é usado:

Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)

Para exercer um melhor controle sobre como as comparações são realizadas, você pode usar sobrecargas adicionais da Compare método.Com o String.Compare método, você pode usar o comparisonType argumento para especificar o tipo de comparação a ser usado.

Valor de comparisonType argumento

Tipo de comparação

Quando usar

Ordinal

Comparação com base nos bytes de componente de cadeias de caracteres.

Use esse valor ao comparar: identificadores diferencia maiúsculas de minúsculas, configurações relacionadas à segurança ou outros identificadores lingüísticos, onde os bytes devem coincidir exatamente.

OrdinalIgnoreCase

Comparação com base nos bytes de componente de cadeias de caracteres.

OrdinalIgnoreCaseusa as informações de cultura invariável para determinar quando dois caracteres diferem somente em maiúsculas e minúsculas.

Use esse valor ao comparar: dados armazenados no Windows, configurações relacionadas a segurança e identificadores de maiúsculas e minúsculas.

CurrentCultureouCurrentCultureIgnoreCase

Comparação com base na interpretação de cadeias de caracteres na cultura atual.

Usar esses valores ao comparar: dados que são exibidos para o usuário, a maioria das entradas do usuário e outros dados que requer interpretação lingüística.

InvariantCultureouInvariantCultureIgnoreCase

Comparação com base na interpretação de cadeias de caracteres na cultura invariável.

Isso é diferente de Ordinal e OrdinalIgnoreCase, porque a cultura invariável trata caracteres fora do seu intervalo aceito como caracteres invariável equivalentes.

Use esses valores somente ao comparar a persistência de dados ou exibem dados lingüisticamente relevantes que requer uma ordem de classificação fixo.

ms235309.collapse_all(pt-br,VS.110).gifConsiderações sobre segurança

Se seu aplicativo toma decisões de segurança com base no resultado de uma comparação ou operação alteração maiúscula-minúscula, então a operação deve usar o método String.Compare e passar Ordinal ou OrdinalIgnoreCase para o argumento comparisonType.

Consulte também

Referência

Funções de conversão de tipo (Visual Basic)

CultureInfo

Outros recursos

Introdução à seqüências de caracteres em Visual Basic