Monday 16 April 2018

Texto binário de comparação de opções


Opção comparar texto binário
Obter através da App Store Leia esta publicação em nosso aplicativo!
Prós e contras de Option Compare binário / texto em VB.
Quais são os prós e os contras da padronização no uso de Option Compare Text vs Option Compare binário para desenvolvimento de VB?
Apenas um pouco de fundo, pois parece que isso ajudaria - a minha equipe de desenvolvimento achou muito mais fácil padronizar em Option Strict On, Option Infer On e Option Explicit devido às suas óbvias vantagens em relação às alternativas. O que não achamos fácil de padronizar é Option Compare Text / Binary, pois parece haver vantagens e desvantagens para ambos e diferentes desenvolvedores têm diferentes opiniões. Alguns dos argumentos para cada lado foram os seguintes:
Algumas das vantagens / argumentos para Option Compare Text:
Reduz a verbosidade no código, removendo a necessidade de chamadas StringComparer s e. ToLower () e StringComparison. OrdinalIgnoreCase em todo o lugar. As necessidades de dados raramente estão preocupadas com o invólucro, como evidenciado pela maioria dos bancos de dados que não são sensíveis a maiúsculas e minúsculas. Raramente você gostaria realmente de distinguir entre THIS e This e isso ao fazer uma comparação de dados. Certos casos específicos de uso são mais simples quando você não precisa se preocupar com o invólucro. Por exemplo, lidar com eventos de controle ASP, onde os comandos são enviados para o código-retransmissão, como cadeias de caracteres e casos de invólucros são difíceis de rastrear, pois o compilador não pode ajudá-lo. Think Select Case declarações para & lt; asp: repetidor & gt; eventos como exemplo. Muitas das preocupações levantadas sobre a comparação de texto dizem respeito à internacionalização, que muitas vezes não é relevante para muitos aplicativos. O VB especificamente é insensível a maiúsculas e minúsculas como um idioma, embora o Visual Studio o ajude, pelo menos, a aplicar a consistência no seu invólucro. O SQL também é insensível a maiúsculas e minúsculas. As cordas são o único lugar onde você precisa se lembrar de se preocupar com isso, o que destaca a estranheza de maneiras que normalmente não a notaria se estivesse preocupado com isso em todos os lugares.
Algumas das vantagens / argumentos para Option Compare Binário:
C # funciona desta forma, assim como a maioria dos outros idiomas. É um pouco inesperado ter um comportamento alternativo e o inesperado não é bom na programação. Existe uma pequena penalidade de desempenho com Option Compare Text como evidenciado pelo IL gerado na compilação. Option Compare Binário não tem essa penalidade. O Texto de Comparação de Opções faz com que certas partes do bloqueio de caracteres não sejam insensíveis à caixa. Mas, não faz com que as coisas como indexação de dicionário sejam insensíveis às maiúsculas e minúsculas por padrão. Então, não é como o Option Compare Text realmente o faz de modo que você não precisa se preocupar com o invólucro. Se ele só funciona a meio caminho, por que incomodar? A programação é difícil. É melhor não tentar suavizar esse fato. Preocupar-se com o revestimento de cordas é parte do negócio. Os seres humanos reconhecem que ESTE é diferente do presente e do tHiS. É claro que o seu código também deve - afinal, eles não são exatamente a mesma string.
Então, eu realmente estou querendo saber se há outras considerações.
Talvez isso ajudasse se eu definisse o que consideraria uma resposta para isso. Se você pode apontar para qualquer recurso externo autoritário que discuta mais detalhadamente essas questões, ou aponte para uma discussão de padrões e melhores práticas ou um livro que dê orientação sobre esse assunto, isso certamente conterá.
Com o Texto de Comparação de Opções, você não precisa se preocupar com o caso ao comparar seqüências de caracteres. Isso pode ser um grande benefício, e evite converter tudo em caso inferior (ou superior) para comapre para igualdade de strings.
O outro lugar onde isso desempenha um papel é a triagem de cordas. O Texto de Comparação de Opções classificará como a lista de arquivos no Windows, mas Option Compare Binary classificará como uma lista de arquivos Unix (todos os nomes de arquivos em maiúsculas aparecem antes dos nomes dos arquivos em minúsculas).
Depois de ler os comentários e a outra resposta, e pensando um pouco mais, eu diria que Option Compare Binary é o caminho a seguir do ponto de vista da consistência com o resto do Framework. Se as chaves do dicionário, etc., são sensíveis a maiúsculas e minúsculas, independentemente da configuração da Comparação de opções, usar comparações binárias por padrão em todo o seu código é apenas consistente. Tudo o que você precisa se preocupar é se, para uma comparação particular, você precisa que ele seja insensível às maiúsculas e código para isso.
Se você for com Option Compare Text, não só você precisa se preocupar se precisa ou não de uma comparação específica para ser case-in (sensível), você também precisa estar ciente do comportamento padrão no contexto atual.
Em seguida, torna-se um argumento não de consitência com outros idiomas, mas de consistência com o framework que você está desenvolvendo.
Use o binário, pois é o que a maioria dos outros idiomas padrão é padrão, e é por isso que as classes são padrão.
Encher uma única palavra não deve quebrar todo o seu arquivo.
Se você realmente precisa de texto (o que não é freqüentemente), use apenas Stringpare ou String. Equals.
O SQL não é sensível a maiúsculas e minúsculas, mas as consultas no LINQ são. É fonte de alguns insetos íntimos.
A solução não é usar texto para as chaves. Quando necessário, assegure-se de que o caso seja consistente em db. Finalmente, quando isso não for possível, simplesmente use tolower conforme necessário. Eu não recomendo usar tolower, exceto quando necessário, isso realmente faz feio o código.
Se você precisa realizar muitas comparações insensíveis ao maiúsculas e minúsculas, escreva um módulo com alguns métodos auxiliares com um nome conciso e inclua-o no seu projeto. Enquanto CaseInsenstiveEquals (S1, S2) ou (usando métodos de extensão), S1.CaseInsensitiveEquals (S2) seria mais detalhado do que S1 = S2, muitas aplicações precisam de uma mistura de comparações sensíveis a maiúsculas e minúsculas. O uso do operador igual para relatar como strings iguais que contêm diferentes seqüências de caracteres aumentará a verbosidade das comparações sensíveis a maiúsculas e minúsculas. Além disso, existem várias maneiras de realizar comparações isentas de maiúsculas e minúsculas. Se alguém usa um método auxiliar, o código desse método irá revelar precisamente o método que ele usa. Em contraste, se usar o Texto de comparação de opções, será muito mais difícil saber como todos os vários casos de canto serão tratados.

Declaração de comparação de opções.
Neste artigo.
Declara o método de comparação padrão para usar ao comparar dados de string.
Peças.
Se usado, a instrução de comparação de opções deve aparecer em um arquivo antes de qualquer outra declaração de código-fonte.
A instrução Option Compare especifica o método de comparação de cadeias (Binário ou Texto). O método de comparação de texto padrão é Binário.
Uma comparação binária compara o valor numérico Unicode de cada caractere em cada string. Uma comparação de texto compara cada caractere Unicode com base em seu significado lexical na cultura atual.
No Microsoft Windows, a ordem de classificação é determinada pela página de códigos. Para obter mais informações, consulte Páginas de códigos.
No exemplo a seguir, os caracteres na página de códigos inglês / europeu (ANSI 1252) são classificados usando Option Compare Binary, que produz uma ordem de classificação binária típica.
Quando os mesmos caracteres na mesma página de código são ordenados usando o Texto de comparação de opções, o seguinte texto é gerado.
Quando uma declaração de comparação de opção não está presente.
Se o código-fonte não contiver uma declaração de comparação de opções, a configuração de comparação de opções na página de compilação, Designer de projeto (Visual Basic) é usada. Se você usar o compilador da linha de comando, a configuração especificada pela opção / optioncompare compilador é usada.
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.
Para definir a opção Comparar no IDE.
No Solution Explorer, selecione um projeto. No menu Projeto, clique em Propriedades.
Defina o valor na caixa Comparação de opções.
Quando você cria um projeto, a configuração de comparação de opções na guia Compilação é definida como a configuração Comparação de opções na caixa de diálogo Opções. Para alterar esta configuração, no menu Ferramentas, clique em Opções. Na caixa de diálogo Opções, expanda Projetos e Soluções e, em seguida, clique em Padrões VB. A configuração padrão inicial em VB Defaults é binária.
Para definir a opção Compare na linha de comando.
Inclua a opção / optioncompare compilador no comando vbc.
O exemplo a seguir usa a instrução Comparação de opções para definir a comparação binária como o método de comparação de string padrão. Para usar esse código, descomente a instrução binária Option Compare e coloque-a no topo do arquivo de origem.
O exemplo a seguir usa a instrução Comparação de opções para definir a ordem de classificação de texto não sensível a maiúsculas e minúsculas como método de comparação de seqüência padrão. Para usar esse código, descomente a instrução Option Compare Text, e coloque-o na parte superior do arquivo de origem.

Option Compare Text / Binary & amp; Option Infer On / Off - VB.
Option Infer On / Off.
Facebook Twitter LinkedIn troca de especialistas / perguntas / 27601373 / Opção-Compare-Texto-Binário-Opção-Infer-On-Off-VB-NET. html cópia.
Jacques Bourgeois (James Burger) (2 comentários)
Dim x As Integer = 2.
É necessário para tipos anônimos. O LINQ ainda funciona sem ele, a menos que você esteja usando tipos anônimos.
Porque os valores literais assumem os tipos padrão.
Publicação destacada.
Fornecedores independentes de software: queremos sua opinião.
Nós valorizamos seus comentários.
Yeti Cooler, Amazon eGift Card e Movie eGift Card!

Opções do compilador do Visual Studio, parte 3: opção Compare.
Option Compare é uma opção de compilador no VB com o padrão padrão para todos os novos projetos. Aqui está o que os SMBs precisam saber sobre a opção.
Esta é a terceira parcela da minha série na configuração de opções de compilação para projetos Visual Studio VB, versões 2005-2010. Leia as parcelas anteriores: Configurando as opções do compilador do Visual Studio, parte 1 e as opções do compilador do Visual Studio, Parte 2: Opção Strict.
As opções do compilador são configurações de nível de projeto que determinam como o compilador se comporta quando compila seu código. Você visualiza e define as opções do compilador na guia Compilar da folha de propriedades do projeto (Figura A). Nesta publicação, vou discutir a opção Alternar comparação. Figura A.
O que significa.
A comparação de opções é uma opção de duas opções que determina como o CLR compara os dados de seqüência de caracteres em operações de comparação que usam as operadoras =, & lt; & gt ;, lt ;, & gt ;, e como. As duas opções são binárias (a maneira como é C #) e Texto. Em todas as versões do VB, o padrão é Binário. Então, se você instalar o Visual Studio e não alterar nada, suas comparações de cordas irão atuar exatamente como fazem em C # em todos os casos. (O compilador C # não oferece uma escolha.)
Contrariamente ao que o nome indica, isso não afeta a maioria dos métodos de comparação de cadeias disponíveis para você no VB. Há dezenas de métodos de comparação de cordas diferentes de =, & lt; & gt ;, & lt ;, & gt ;, e Like, e nenhum deles é afetado pela opção Compare. Isso inclui uma grande variedade de métodos estáticos (compartilhados) e instâncias em classes que implementam IEnumerable e IComparable, como as classes String, Enumerable e Array. Aqui está uma lista principalmente completa de métodos que ignoram a opção Compare.
Isso significa que, por padrão, todos os métodos de comparação que você pode invocar em uma Lista, matriz ou coleção genérica usarão Comparação binária se você pretende ou não, assim como os métodos na lista acima que você invoca em Strings. Você pode fazer exceções definindo Option Compare para módulos, classes e estruturas.
Vamos entrar nos detalhes.
Uma comparação binária analisa a representação binária dos dados da string, em oposição a qualquer tipo de representação alfanumérica, para determinar se duas cadeias são equivalentes. Por exemplo, a representação binária da letra maiúscula A é 01000001. (Unicode e ASCII são esquemas de codificação diferentes, mas este não é o melhor lugar para entrar nas diferenças, então estou usando o caso simples em que ASCII e UTF - 8 são essencialmente os mesmos.) Uma comparação binária analisa esta representação binária, e não a forma legível por humanos do que ela representa.
A importância disso torna-se evidente logo que você se preocupa com a precisão da página de códigos, isto é, sensibilidade de maiúsculas e minúsculas, conjuntos de caracteres mistos ou qualquer cenário no qual todos os caracteres possíveis devem ser tratados como distintos de todos os outros. A representação binária UTF-8 da letra minúscula a é 01100001 - claramente não é a mesma coisa que a letra maiúscula a, que é 01000001. Usando a comparação binária, não há nenhuma maneira a = comparação de A e A vai retornar True.
O mesmo vale para os caracteres acentuados. Considere as várias possibilidades para a minúscula minúscula UTF-8-codificada uma vez que você adiciona as variantes acentuadas.
Por padrão, VB vai considerar A & lt; & gt; a, e a & lt; & gt; uma.
Mas comparação de cordas não é apenas sobre equivalência; também é sobre precedência (ordem de classificação). A, a, e â não são apenas iguais; Eles têm um lugar específico na fila, um antes do outro. Esse precedente é determinado pela página de códigos. Sob a página de códigos em inglês ANSI 1252 (que é usada pelo inglês e a maioria dos idiomas europeus), que produz uma ordem de classificação ascendente como esta:
(A documentação do MSDN diz que a ordem de classificação seria A & lt; a & lt; â, mas isso não é correto.)
Quando ordenados em ordem ascendente em comparação binária usando a página de códigos 1252, uma letra maiúscula sempre virá depois de uma letra minúscula.
As páginas de código determinam a precedência entre cada personagem, então os caracteres não acentuados e acentuados têm precedência relativa. Ao contrário da documentação do MSDN, uma Z em maiúsculas não aparecerá necessariamente antes de uma letra maiúscula. Aqui está o que você obtém com o ANSI 1252:
Esse é o resultado da comparação binária - toda representação de personagem possível é única e tem uma ordem de classificação definida.
A comparação de texto afeta comparações envolvendo as operadoras =, & lt; & gt ;, lt ;, & gt ;, e como. Ele faz essencialmente exceções com base na representação de texto dos personagens. A exceção mais importante é que trata os caracteres diferentes do caso como os mesmos para fins de equivalência; O ordenamento não é afetado. Assim, em Texto, compare:
A ordem de classificação é determinada pela página de códigos, mas em uma comparação de texto, a ordem de classificação não será aplicada se você estiver usando um & lt; ou & gt; operador; Isso será aplicado somente se você usar IEnumerable. Sort (), OrderBy () ou ThenBy ().
Tópicos relacionados:
Junte-se à discussão.
Escolhas do editor.
Boletins de notícias gratuitos, na sua Caixa de entrada.
Tech News que você pode usar.
Nós entregamos as principais notícias de notícias de negócios sobre as empresas, as pessoas e os produtos que revolucionam o planeta.
Melhor da Semana.
Nossos editores destacam os artigos, galerias e vídeos da TechRepublic que você absolutamente não pode deixar de estar atualizado sobre as últimas notícias, inovações e dicas da TI.

Opção Compare texto ou binário? [Respondido] RSS.
Atalhos.
guideraven.
Opção Compare texto ou binário?
05 de novembro de 2006 09:14 PM & # 124; guideraven & # 124; LIGAÇÃO.
opção comparar binário ou texto?
O que a maioria de vocês usa e há um motivo particular para isso, além de um ser o padrão? Para uma aplicação multilingue, qual seria a melhor escolha?
Eu preciso que meus dados sejam sensíveis a maiúsculas e minúsculas, ou seja, se o meu usuário muda & quot; amy & quot; para "Amy" Meu sistema precisa reconhecer isso e gravá-lo como uma mudança.
Eu não acho que eu nunca precisarei classificar os dados no meu aplicativo e na camada de UI, porque eu recebo todos os meus dados do meu banco de dados do servidor sql e a classificação é feita lá.
Mas com a opção padrão compara o binário, preciso me lembrar de usar. toUpper ou to Low para garantir comparações insensíveis ao maiúsculas e minúsculas quando eu verificar os campos de status, como se x. statusCode. tolower = "quot; active" então.
Gostaria de ouvir algumas sugestões. Obrigado.
Re: Opção Compare texto ou binário?
05 de novembro de 2006 10:27 PM & # 124; mbanavige & # 124; LIGAÇÃO.
Eu não confio na comparação de opções para comparações de cordas. Eu prefiro ser explícito quando eu executo a comparação.

Visual Basic for Applications Reference.
Usado no nível do módulo para declarar o método de comparação padrão para usar quando os dados da string são comparados.
Se usado, a declaração de comparação de opções deve aparecer em um módulo antes de qualquer procedimento.
A instrução de comparação de opções especifica o método de comparação de cadeias (binário, texto ou banco de dados) para um módulo. Se um módulo não incluir uma instrução de comparação de opções, o método de comparação de texto padrão é binário.
Opção Compare resultados binários em comparações de cadeias com base em uma ordem de classificação derivada das representações binárias internas dos caracteres. No Microsoft Windows, a ordem de classificação é determinada pela página de códigos. Uma ordem de classificação binária típica é mostrada no exemplo a seguir:
Opção Compare resultados de texto em comparações de string com base em uma ordem de classificação de texto não sensível a maiúsculas e minúsculas determinada pela localidade do seu sistema. Quando os mesmos caracteres são classificados usando Option Compare Text, a seguinte ordem de classificação de texto é produzida:
O banco de dados de comparação de opções só pode ser usado no Microsoft Access. Isso resulta em comparações de seqüência de caracteres com base na ordem de classificação determinada pelo ID de localidade do banco de dados onde as comparações de cadeias ocorrem.

No comments:

Post a Comment