Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
0 de 1 pessoas classificaram isso como útil - Avalie este tópico

Método String.Compare (String, String, Boolean)

Compara dois objetos String especificados, ignorando ou considerando caracteres com caixa alta / baixa e retorna um número inteiro que indica sua posição relativa na ordem de classificação.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)
public static int Compare(
	string strA,
	string strB,
	bool ignoreCase
)

Parâmetros

strA
Tipo: System.String
A primeira cadeia de caracteres a ser comparada.
strB
Tipo: System.String
A segunda cadeia de caracteres a ser comparada.
ignoreCase
Tipo: System.Boolean
true para ignorar maiúsculas durante a comparação; do contrário, false.

Valor de retorno

Tipo: System.Int32
Um inteiro assinado de 32 bits que indica a relação léxica entre os dois termos de comparação.

Valor

Condição

Menor do que zero

strA é menor que strB.

Zero

strA é igual a strB.

Maior que zero

strA é maior que strB.

A comparação usa a cultura atual para obter informações específicas da cultura, como regras de maiúsculas e a ordem alfabética de caracteres individuais. Por exemplo, uma cultura poderia especificar que determinadas combinações de caracteres são tratadas como um caractere único ou caracteres em maiúsculas e minúsculas são comparados de uma determinada forma ou que a ordem de classificação de um caractere depende dos caracteres que precedem ou o seguem.

A comparação é realizada usando-se regras de classificação de palavras. Para obter mais informações sobre palavra, seqüência de caracteres e classificação ordinal, consulte System.Globalization.CompareOptions.

Observação de cuidadoCuidado

Para comparar cadeias de caracteres, você deve chamar o método de Compare(String, String, StringComparison) , que requer que você especificar explicitamente o tipo de comparação de cadeia de caracteres que usa o método. Para obter mais informações, consulte Práticas recomendadas para o uso de cadeias de caracteres no .NET Framework.

Um ou ambos os comparandos podem ser null. Por definição, qualquer cadeia de caracteres, inclusive a cadeia de caracteres vazia (""), compara-se maior que uma referência nula e duas referências nulas comparam-se como iguais.

A comparação termina quando uma desigualdade é descoberta ou ambas as cadeias de caracteres são comparadas. No entanto, caso as duas cadeias de caracteres comparem-se iguais ao final de uma cadeia de caracteres e a outra cadeia de caracteres tenha caracteres restantes, a cadeia de caracteres com caracteres restantes é considerada maior. O valor de retorno é o resultado da última comparação realizada.

Os resultados inesperados podem ocorrer quando as comparações são afetadas por regras de maiúsculas específicas de cultura. Por exemplo, em turco, o exemplo a seguir produz os resultados errados porque o sistema de arquivos em turco não usa regras de maiúsculas linguísticas para a letra "i" em "file".


static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}


Compare o nome do caminho para "file" que usa uma comparação ordinal. O código correto para fazer isso é o seguinte:


static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}


Observações para chamadores

Entre conjuntos de caracteres estão caracteres ignoráveis. O método de Compare(String, String, Boolean) não considera como caracteres quando executa uma comparação culture-sensitive. Por exemplo, uma comparação sensível, não diferencia maiúsculas de minúsculas de “animal” com “animal” (usando um hífen virtual, ou U+00AD) indica que as duas cadeias de caracteres são equivalentes, como mostra o exemplo a seguir.


using System;

public class Example
{
   public static void Main()
   {
      string s1 = "Ani\u00ADmal";
      string s2 = "animal";

      Console.WriteLine("Comparison of '{0}' and '{1}': {2}", 
                        s1, s2, String.Compare(s1, s2, true));
   }
}
// The example displays the following output:
//       Comparison of 'ani-mal' and 'animal': 0


Para reconhecer caracteres ignorable em uma comparação de cadeia de caracteres, chame o método de Compare e fornecer um valor de CompareOptions.Ordinal ou de CompareOptions.OrdinalIgnoreCase para o parâmetro de comparisonType .

O exemplo a seguir demonstra como este método de Compare é equivalente a usar ToUpper ou ToLower ao comparar cadeias de caracteres.


unsafe
{
    // Null terminated ASCII characters in an sbyte array
    String szAsciiUpper = null;
    sbyte[] sbArr1 = new sbyte[] { 0x41, 0x42, 0x43, 0x00 };
    // Instruct the Garbage Collector not to move the memory
    fixed(sbyte* pAsciiUpper = sbArr1)
    {
        szAsciiUpper = new String(pAsciiUpper);
    }
    String szAsciiLower = null;
    sbyte[] sbArr2 = { 0x61, 0x62, 0x63, 0x00 };
    // Instruct the Garbage Collector not to move the memory
    fixed(sbyte* pAsciiLower = sbArr2)
    {
        szAsciiLower = new String(pAsciiLower, 0, sbArr2.Length);
    }
    // Prints "ABC abc"
    Console.WriteLine(szAsciiUpper + " " + szAsciiLower);

    // Compare Strings - the result is true
    Console.WriteLine("The Strings are equal when capitalized ? " +
        (String.Compare(szAsciiUpper.ToUpper(), szAsciiLower.ToUpper())==0?"true":"false") );

    // This is the effective equivalent of another Compare method, which ignores case
    Console.WriteLine("The Strings are equal when capitalized ? " +
        (String.Compare(szAsciiUpper, szAsciiLower, true)==0?"true":"false") );
}


.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.