Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método String.Compare (String, Int32, String, Int32, Int32, StringComparison)

 

Publicado: octubre de 2016

Compara las subcadenas de dos objetos String especificados usando las reglas especificadas y devuelve un entero que indica su posición relativa en el criterio de ordenación.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	StringComparison comparisonType
)

Parámetros

strA
Type: System.String

Primera cadena que se va a usar en la comparación.

indexA
Type: System.Int32

Posición de la subcadena dentro de strA.

strB
Type: System.String

Segunda cadena que se va a usar en la comparación.

indexB
Type: System.Int32

Posición de la subcadena dentro de strB.

length
Type: System.Int32

Número máximo de caracteres de las subcadenas que se van a comparar.

comparisonType
Type: System.StringComparison

Uno de los valores de enumeración que especifica las reglas que se van a usar en la comparación.

Valor devuelto

Type: System.Int32

Entero de 32 bits con signo que indica la relación léxica que existe entre los dos términos de una comparación.

Valor

Condición

Menor que cero

La subcadena de strA precede a la subcadena de strB en el criterio de ordenación.

Cero

Las subcadenas que se producen en la misma posición en el criterio de ordenación, o el length del parámetro es cero.

Mayor que cero

La subcadena de strA follllows la subcadena en strB en el criterio de ordenación.

Exception Condition
ArgumentOutOfRangeException

indexA es mayor que strA.Length.

O bien

indexB es mayor que strBLength.

O bien

indexA, indexB o length es negativo.

-o-

indexA o indexB es null y length es mayor que cero.

ArgumentException

comparisonType no es un valor StringComparison.

Compara las subcadenas que se inicie en strA en indexA y en strB en indexB. Ambos indexA y indexB son de base cero, es decir, el primer carácter de strA y strB está en posición cero, no coloque uno. La longitud de la primera subcadena es igual a la longitud de strA menos indexA más uno. La longitud de la segunda subcadena es igual a la longitud de strB menos indexB más uno.

El número de caracteres que se va a comparar es el menor de las longitudes de las dos subcadenas, y length. El indexA, indexB, y length parámetros no deben ser negativos.

El comparisonType parámetro indica si la comparación debe utilizar la referencia cultural actual o invariable, respetan omitir la grafía de la comparación o utilizar word (referencia cultural) o reglas de ordenación ordinal de (la referencia cultural).

Pueden ser uno o ambos términos null. Por definición, cualquier cadena, incluida la cadena vacía (""), son mayores que una referencia nula; y dos referencias nulas son iguales entre sí.

La comparación finaliza cuando se detecta una desigualdad o se han comparado las dos subcadenas. Sin embargo, si las dos cadenas son iguales hasta el final de una cadena y la otra cadena tiene caracteres restantes, la cadena de caracteres restantes se considera mayor. El valor devuelto es el resultado de la última comparación realizada.

Pueden producirse resultados inesperados cuando las comparaciones se ven afectadas por las reglas de mayúsculas y minúsculas específicas de la referencia cultural. Por ejemplo, en turco, en el ejemplo siguiente se genera resultados no válidos porque el sistema de archivos turco no utiliza reglas lingüísticas de mayúsculas y minúsculas para la letra "i" de "file".

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

Compare el nombre de ruta de acceso a "file" utilizando una comparación ordinal. El código correcto para hacer esto es como sigue:

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

Notas para llamadores:

Los juegos de caracteres incluyen caracteres que se pueden pasar por alto. El Compare(String, Int32, String, Int32, Int32, StringComparison) método no tiene en cuenta estos caracteres cuando se realiza una comparación lingüística o referencia cultural. Para que reconozca los caracteres pueden pasar por alto en la comparación, proporcione un valor de StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase para el comparisonType parámetro.

En el ejemplo siguiente se compara dos subcadenas.

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

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

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

str1 = 'machine', str2 = 'device'
Substring 'ch' in 'machine' is less than substring 'de' in 'device'.
*/

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: