Informações
O tópico solicitado está sendo mostrado abaixo. No entanto, este tópico não está incluído nesta biblioteca.

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

Compara substrings de dois objetos String especificados, ignorando ou considerando caracteres com caixa alta / baixa, usando as informações específicas de cultura para influenciar a comparação 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,
	int indexA,
	string strB,
	int indexB,
	int length,
	bool ignoreCase,
	CultureInfo culture
)

Parâmetros

strA
Tipo: System.String
A primeira cadeia de caracteres a ser usada na comparação.
indexA
Tipo: System.Int32
A posição da subcadeia de caracteres dentro de strA.
strB
Tipo: System.String
A segunda cadeia de caracteres a ser usada na comparação.
indexB
Tipo: System.Int32
A posição da subcadeia de caracteres dentro de strB.
length
Tipo: System.Int32
O número máximo de caracteres nas subcadeias de caracteres a serem comparadas.
ignoreCase
Tipo: System.Boolean
true para ignorar maiúsculas durante a comparação; do contrário, false.
culture
Tipo: System.Globalization.CultureInfo
Um objeto que fornece informações específicas à cultura específica de comparação.

Valor de retorno

Tipo: System.Int32
Um inteiro que indica a relação léxica entre os dois comparands.

Valor

Condição

Menor do que zero

A subcadeia de caracteres em strA é menor que a subcadeia de caracteres em strB.

Zero

As subcadeias de caracteres são iguais ou length é zero.

Maior que zero

A subcadeia de caracteres em strA é maior que a subcadeia de caracteres em strB.

ExceçãoCondição
ArgumentOutOfRangeException

indexA é maior que strA.Length.

- ou -

indexB é maior que strB.Length.

- ou -

indexA, indexB ou length é negativo.

-ou-

strA ou strB são null, e length for maior que zero.

ArgumentNullException

culture é null.

A subcadeia de caracteres para comparar o início em strA em indexAe, em strB em indexB. indexA e indexB zero são baseados; isto é, o primeiro caractere em strA e em strB está na posição zero, não uma posição. O tamanho da primeira subcadeia de caracteres é igual ao tamanho de strA menos indexA mais um. O tamanho da segunda subcadeia de caracteres é igual ao tamanho de strB menos indexB mais um.

O número de caracteres a serem comparados é o menor dos tamanhos das subcadeias de caracteres e length. Os parâmetros indexA, indexB e length devem ser não negativos.

A comparação usa o parâmetro de culture para obter informações específicas à cultura específica como regras de uso de maiúsculas e minú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.

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 subcadeias 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, Int32, String, Int32, Int32, Boolean, CultureInfo) não considera esses caracteres quando o executa uma comparação ou linguística com caracteres. Para reconhecer caracteres ignorable na comparação, chame o método de Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) e forneça um valor de CompareOptions.Ordinal ou de CompareOptions.OrdinalIgnoreCase para o parâmetro de options .

O exemplo a seguir compara duas subcadeia de caracteres usando diferentes culturas e ignorando os exemplos de subcadeia de caracteres. A escolha de afeta a cultura como a letra “i” é comparada.


// Sample for String.Compare(String, Int32, String, Int32, Int32, Boolean, CultureInfo)
using System;
using System.Globalization;

class Sample {
    public static void Main() {
//                 0123456
    String str1 = "MACHINE";
    String str2 = "machine";
    String str;
    int result;

    Console.WriteLine();
    Console.WriteLine("str1 = '{0}', str2 = '{1}'", str1, str2);
    Console.WriteLine("Ignore case, Turkish culture:");
    result = String.Compare(str1, 4, str2, 4, 2, true, new CultureInfo("tr-TR"));
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(4, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(4, 2), str2);

    Console.WriteLine();
    Console.WriteLine("Ignore case, invariant culture:");
    result = String.Compare(str1, 4, str2, 4, 2, true, CultureInfo.InvariantCulture);
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(4, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(4, 2), str2);
    }
}
/*
This example produces the following results:

str1 = 'MACHINE', str2 = 'machine'
Ignore case, Turkish culture:
Substring 'IN' in 'MACHINE' is less than substring 'in' in 'machine'.

Ignore case, invariant culture:
Substring 'IN' in 'MACHINE' is equal to substring 'in' in 'machine'.
*/


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 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 Phone 8.1, Windows Phone 8, 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.

Contribuições da comunidade

Mostrar:
© 2014 Microsoft