Comparación de cadenas en .NETComparing Strings in .NET

.NET proporciona varios métodos para comparar los valores de cadenas..NET provides several methods to compare the values of strings. En la tabla siguiente se enumeran y describen los métodos de comparación de valores.The following table lists and describes the value-comparison methods.

Nombre del métodoMethod name UsarUse
String.Compare Compara los valores de dos cadenas.Compares the values of two strings. Devuelve un valor entero.Returns an integer value.
String.CompareOrdinal Compara dos cadenas independientemente de la referencia cultural local.Compares two strings without regard to local culture. Devuelve un valor entero.Returns an integer value.
String.CompareTo Compara el objeto de cadena actual con otra cadena.Compares the current string object to another string. Devuelve un valor entero.Returns an integer value.
String.StartsWith Determina si una cadena comienza con la cadena que se pasa.Determines whether a string begins with the string passed. Devuelve un valor booleano.Returns a Boolean value.
String.EndsWith Determina si una cadena termina con la cadena que se pasa.Determines whether a string ends with the string passed. Devuelve un valor booleano.Returns a Boolean value.
String.Equals Determina si dos cadenas son iguales.Determines whether two strings are the same. Devuelve un valor booleano.Returns a Boolean value.
String.IndexOf Devuelve la posición de índice de un carácter o cadena, empezando en el comienzo de la cadena que se examina.Returns the index position of a character or string, starting from the beginning of the string you are examining. Devuelve un valor entero.Returns an integer value.
String.LastIndexOf Devuelve la posición de índice de un carácter o cadena, empezando en el final de la cadena que se examina.Returns the index position of a character or string, starting from the end of the string you are examining. Devuelve un valor entero.Returns an integer value.

CompararCompare

El método String.Compare estático proporciona una manera de comparar dos cadenas exhaustivamente.The static String.Compare method provides a thorough way of comparing two strings. En este método se tiene en cuenta la referencia cultural.This method is culturally aware. Esta función se puede usar para comparar dos cadenas o subcadenas de dos cadenas.You can use this function to compare two strings or substrings of two strings. Además, se proporcionan sobrecargas para tener en cuenta o no las diferencias de referencia cultural y de mayúsculas y minúsculas.Additionally, overloads are provided that regard or disregard case and cultural variance. En la tabla siguiente, se muestran los tres valores enteros que este método puede devolver.The following table shows the three integer values that this method might return.

Valor devueltoReturn value CondiciónCondition
Un entero negativoA negative integer La primera cadena precede a la segunda cadena en el criterio de ordenación.The first string precedes the second string in the sort order.

O bien-or-

La primera cadena es null.The first string is null.
00 La primera y la segunda cadena son iguales.The first string and the second string are equal.

O bien-or-

Ambas cadenas son null.Both strings are null.
Un entero positivo.A positive integer

O bien-or-

11
La primera cadena sigue a la segunda cadena en el criterio de ordenación.The first string follows the second string in the sort order.

O bien-or-

La segunda cadena es null.The second string is null.

Importante

La finalidad principal del método String.Compare es que se utilice para la ordenación o clasificación de cadenas.The String.Compare method is primarily intended for use when ordering or sorting strings. El método String.Compare no debe utilizarse para comprobar la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en cuenta si una cadena es menor o mayor que otra).You should not use the String.Compare method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison) .Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

En el ejemplo siguiente, se usa el método String.Compare para determinar los valores relativos de dos cadenas.The following example uses the String.Compare method to determine the relative values of two strings.

String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

Con este ejemplo se muestra -1 en la consola.This example displays -1 to the console.

En el ejemplo anterior se tienen en cuenta las referencias culturales de forma predeterminada.The preceding example is culture-sensitive by default. Para realizar una comparación de cadenas que no tenga en cuenta las referencias culturales, utilice una sobrecarga del método String.Compare ya que permite especificar la referencia cultural que se debe utilizar mediante un parámetro de referencia cultural .To perform a culture-insensitive string comparison, use an overload of the String.Compare method that allows you to specify the culture to use by supplying a culture parameter. Para obtener un ejemplo que muestra cómo utilizar el método String.Compare para realizar una comparación de este tipo, consulte Realizar comparaciones de cadenas que no tienen en cuenta las referencias culturales.For an example that demonstrates how to use the String.Compare method to perform a culture-insensitive comparison, see Performing Culture-Insensitive String Comparisons.

CompareOrdinalCompareOrdinal

El método String.CompareOrdinal compara dos objetos de cadena sin tener en cuenta la referencia cultural local.The String.CompareOrdinal method compares two string objects without considering the local culture. Los valores devueltos de este método son idénticos a los que devolvía el método Compare en la tabla anterior.The return values of this method are identical to the values returned by the Compare method in the previous table.

Importante

La finalidad principal del método String.CompareOrdinal es que se utilice para la ordenación o clasificación de cadenas.The String.CompareOrdinal method is primarily intended for use when ordering or sorting strings. El método String.CompareOrdinal no debe utilizarse para comprobar la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en cuenta si una cadena es menor o mayor que otra).You should not use the String.CompareOrdinal method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison) .Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

En el ejemplo siguiente se usa el método CompareOrdinal para comparar los valores de dos cadenas.The following example uses the CompareOrdinal method to compare the values of two strings.

String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

Con este ejemplo se muestra -32 en la consola.This example displays -32 to the console.

CompareToCompareTo

El método String.CompareTo compara la cadena que encapsula el objeto de cadena actual con otra cadena u objeto.The String.CompareTo method compares the string that the current string object encapsulates to another string or object. Los valores devueltos de este método son idénticos a los que devolvía el método String.Compare en la tabla anterior.The return values of this method are identical to the values returned by the String.Compare method in the previous table.

Importante

La finalidad principal del método String.CompareTo es que se utilice para la ordenación o clasificación de cadenas.The String.CompareTo method is primarily intended for use when ordering or sorting strings. El método String.CompareTo no debe utilizarse para comprobar la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en cuenta si una cadena es menor o mayor que otra).You should not use the String.CompareTo method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison) .Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

En el ejemplo siguiente se usa el método String.CompareTo para comparar los objetos string1 y string2 .The following example uses the String.CompareTo method to compare the string1 object to the string2 object.

String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

Con este ejemplo se muestra -1 en la consola.This example displays -1 to the console.

Todas las sobrecargas del método String.CompareTo realizan comparaciones que tienen en cuenta las referencias culturales y las mayúsculas y minúsculas de manera predeterminada.All overloads of the String.CompareTo method perform culture-sensitive and case-sensitive comparisons by default. No se proporcionan sobrecargas de este método que permitan realizar una comparación que no tenga en cuenta las referencias culturalesNo overloads of this method are provided that allow you to perform a culture-insensitive comparison. Para lograr claridad en el código, se recomienda utilizar el método String.Compare en su lugar, especificando CultureInfo.CurrentCulture para las operaciones que tienen en cuenta la referencia cultural o CultureInfo.InvariantCulture para las operaciones que no la tienen en cuenta.For code clarity, we recommend that you use the String.Compare method instead, specifying CultureInfo.CurrentCulture for culture-sensitive operations or CultureInfo.InvariantCulture for culture-insensitive operations. Para obtener ejemplos que muestran cómo utilizar el método String.Compare para realizar comparaciones de este tipo, vea Realizar comparaciones de cadenas que no tienen en cuenta las referencias culturales.For examples that demonstrate how to use the String.Compare method to perform both culture-sensitive and culture-insensitive comparisons, see Performing Culture-Insensitive String Comparisons.

Es igual aEquals

El método String.Equals puede determinar con facilidad si dos cadenas son iguales.The String.Equals method can easily determine if two strings are the same. Este método distingue entre mayúsculas y minúsculas y devuelve un valor booleano True o False .This case-sensitive method returns a true or false Boolean value. Se puede usar desde una clase existente, como se muestra en el siguiente ejemplo.It can be used from an existing class, as illustrated in the next example. En el ejemplo siguiente se usa el método Equals para determinar si un objeto de cadena contiene la frase "Hello World".The following example uses the Equals method to determine whether a string object contains the phrase "Hello World".

String^ string1 = "Hello World";
Console::WriteLine(string1->Equals("Hello World"));
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

Con este ejemplo se muestra True en la consola.This example displays True to the console.

Este método se puede usar también como método estático.This method can also be used as a static method. En el ejemplo siguiente se comparan dos objetos de cadena utilizando un método estático.The following example compares two string objects using a static method.

String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

Con este ejemplo se muestra True en la consola.This example displays True to the console.

StartsWith y EndsWithStartsWith and EndsWith

El método String.StartsWith se puede usar para determinar si un objeto de cadena comienza con los mismos caracteres que forman otra cadena.You can use the String.StartsWith method to determine whether a string object begins with the same characters that encompass another string. Este método distingue entre mayúsculas y minúsculas y devuelve true si el objeto de cadena actual comienza con la cadena que se pasa y false si no lo hace.This case-sensitive method returns true if the current string object begins with the passed string and false if it does not. En el ejemplo siguiente se usa este método para determinar si un objeto de cadena comienza con "Hello".The following example uses this method to determine if a string object begins with "Hello".

String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

Con este ejemplo se muestra True en la consola.This example displays True to the console.

El método String.EndsWith compara la cadena que se pasa con los caracteres del final del objeto de cadena actual.The String.EndsWith method compares a passed string to the characters that exist at the end of the current string object. También devuelve un valor booleano.It also returns a Boolean value. En el ejemplo siguiente se comprueba el final de una cadena con el método EndsWith .The following example checks the end of a string using the EndsWith method.

String^ string1 = "Hello World";
Console::WriteLine(string1->EndsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

Con este ejemplo se muestra False en la consola.This example displays False to the console.

IndexOf y LastIndexOfIndexOf and LastIndexOf

El método String.IndexOf se puede usar para determinar la posición de la primera aparición de un carácter concreto dentro de una cadena.You can use the String.IndexOf method to determine the position of the first occurrence of a particular character within a string. Este método, que distingue entre mayúsculas y minúsculas, empieza a contar desde el comienzo de una cadena y devuelve la posición del carácter que se pasa utilizando un índice de base cero.This case-sensitive method starts counting from the beginning of a string and returns the position of a passed character using a zero-based index. Si no encuentra el carácter, se devuelve un valor de –1.If the character cannot be found, a value of –1 is returned.

En el ejemplo siguiente se usa el método IndexOf para buscar la primera aparición del carácter 'l' en una cadena.The following example uses the IndexOf method to search for the first occurrence of the 'l' character in a string.

String^ string1 = "Hello World";
Console::WriteLine(string1->IndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

Con este ejemplo se muestra 2 en la consola.This example displays 2 to the console.

El método String.LastIndexOf es parecido al método String.IndexOf , con la diferencia de que devuelve la posición de la última instancia de un carácter concreto en una cadena.The String.LastIndexOf method is similar to the String.IndexOf method except that it returns the position of the last occurrence of a particular character within a string. Distingue mayúsculas y minúsculas y utiliza un índice de base cero.It is case-sensitive and uses a zero-based index.

En el ejemplo siguiente se usa el método LastIndexOf para buscar la última aparición del carácter 'l' en una cadena.The following example uses the LastIndexOf method to search for the last occurrence of the 'l' character in a string.

String^ string1 = "Hello World";
Console::WriteLine(string1->LastIndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

Con este ejemplo se muestra 9 en la consola.This example displays 9 to the console.

Los dos métodos resultan útiles si se usan junto con el método String.Remove .Both methods are useful when used in conjunction with the String.Remove method. Se pueden usar los métodos IndexOf o LastIndexOf para recuperar la posición de un carácter y, a continuación, proporcionar esa posición al método Remove para quitar un carácter o una palabra que comience por ese carácter.You can use either the IndexOf or LastIndexOf methods to retrieve the position of a character, and then supply that position to the Remove method in order to remove a character or a word that begins with that character.

Vea tambiénSee also