Compartir a través de


Comparar cadenas

Actualización: noviembre 2007

.NET Framework proporciona varios métodos para comparar los valores de cadenas. En la tabla siguiente se enumeran y describen los métodos de comparación de valores.

Nombre del método

Use

String.Compare

Compara los valores de dos cadenas. Devuelve un valor entero.

String.CompareOrdinal

Compara dos cadenas independientemente de la referencia cultural local. Devuelve un valor entero.

String.CompareTo

Compara el objeto de cadena actual con otra cadena. Devuelve un valor entero.

String.StartsWith

Determina si una cadena comienza con la cadena que se pasa. Devuelve un valor booleano.

String.EndsWith

Determina si una cadena termina con la cadena que se pasa. Devuelve un valor booleano.

String.Equals

Determina si dos cadenas son iguales. Devuelve un valor booleano.

String.IndexOf

Devuelve la posición de índice de un carácter o cadena, empezando en el comienzo de la cadena que se examina. Devuelve un valor entero.

String.LastIndexOf

Devuelve la posición de índice de un carácter o cadena, empezando en el final de la cadena que se examina. Devuelve un valor entero.

Compare

El método String.Compare proporciona una manera de comparar exhaustivamente el objeto de cadena actual con otra cadena u objeto. En este método se tiene en cuenta la referencia cultural. Esta función se puede usar para comparar dos cadenas o subcadenas de dos cadenas. Además, se proporcionan sobrecargas para tener en cuenta o no las diferencias de referencia cultural y de mayúsculas y minúsculas. En la tabla siguiente se muestran los tres valores enteros que este método puede devolver.

Tipo de valor

Condición

Un entero negativo

strA es menor que strB.

0

strA es igual que strB.

Un entero positivo.

O bien

1

Esta instancia es mayor que value.

O bien

value es una referencia nula (Nothing en Visual Basic).

Nota importante:

La finalidad principal del método Compare es que se utilice para la ordenación o clasificación de cadenas. El método 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). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison).

En el ejemplo siguiente se usa el método Compare para determinar los valores relativos de dos cadenas.

Dim MyString As String = "Hello World!"
Console.WriteLine([String].Compare(MyString, "Hello World?"))
string MyString = "Hello World!";      
Console.WriteLine(String.Compare(MyString, "Hello World?"));

Con este ejemplo se muestra -1 en la consola.

En el ejemplo anterior se tienen en cuenta las referencias culturales de forma predeterminada. 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. Para obtener un ejemplo que muestra cómo utilizar el método String.Compare para realizar una comparación de este tipo, vea Realizar comparaciones de cadenas que no tienen en cuenta las referencias culturales.

CompareOrdinal

El método String.CompareOrdinal compara dos objetos de cadena sin tener en cuenta la referencia cultural local. Los valores devueltos de este método son idénticos a los que devolvía el método Compare en la tabla anterior.

Nota importante:

La finalidad principal del método CompareOrdinal es que se utilice para la ordenación o clasificación de cadenas. El método 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). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison).

En el ejemplo siguiente se usa el método CompareOrdinal para comparar los valores de dos cadenas.

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

Con este ejemplo se muestra -32 en la consola.

CompareTo

El método String.CompareTo compara la cadena que encapsula el objeto de cadena actual con otra cadena u objeto. Los valores devueltos de este método son idénticos a los que devolvía el método Compare en la tabla anterior.

Nota importante:

La finalidad principal del método CompareTo es que se utilice para la ordenación o clasificación de cadenas. El método 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). En su lugar, para determinar si dos cadenas son iguales, use el método String.Equals(String, String, StringComparison).

En el ejemplo siguiente se usa el método CompareTo para comparar los objetos MyString y OtherString.

Dim MyString As String = "Hello World"
Dim OtherString As String = "Hello World!"
Dim MyInt As Integer = MyString.CompareTo(OtherString)
Console.WriteLine(MyInt)
String MyString = "Hello World";
String OtherString = "Hello World!";
int MyInt = MyString.CompareTo(OtherString);    
Console.WriteLine( MyInt );

Con este ejemplo se muestra 1 en la consola.

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. No se proporcionan sobrecargas de este método que permitan realizar una comparación que no tenga en cuenta las referencias culturales Para lograr claridad en el código, se recomienda utilizar el método String.Compare en su lugar, especificando CultureInfo.CurrentCulture para operaciones que tengan en cuenta la referencia cultural o CultureInfo.InvariantCulture para operaciones que no la tengan en cuenta. 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.

Equals

El método String.Equals puede determinar con facilidad si dos cadenas son iguales. Este método distingue entre mayúsculas y minúsculas y devuelve un valor booleano True o False. Se puede usar desde una clase existente, como se muestra en el siguiente ejemplo. En el ejemplo siguiente se usa el método Equals para determinar si un objeto de cadena contiene la frase "Hello World".

Dim MyString As String = "Hello World"
Console.WriteLine(MyString.Equals("Hello World"))
string MyString = "Hello World";
Console.WriteLine(MyString.Equals("Hello World"));

Con este ejemplo se muestra True en la consola.

Este método se puede usar también como método estático. En el ejemplo siguiente se comparan dos objetos de cadena utilizando un método estático.

Dim MyString As String = "Hello World"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))
string MyString = "Hello World";
string YourString = "Hello World";
Console.WriteLine(String.Equals(MyString, YourString));

Con este ejemplo se muestra True en la consola.

StartsWith y 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. 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. En el ejemplo siguiente se usa este método para determinar si un objeto de cadena comienza con "Hello".

Dim MyString As String = "Hello World"
Console.WriteLine(MyString.StartsWith("Hello"))
string MyString = "Hello World";
Console.WriteLine(MyString.StartsWith("Hello"));

Con este ejemplo se muestra True en la consola.

El método String.EndsWith compara la cadena que se pasa con los caracteres del final del objeto de cadena actual. También devuelve un valor booleano. En el ejemplo siguiente se comprueba el final de una cadena con el método EndsWith.

Dim MyString As String = "Hello World"
Console.WriteLine(MyString.EndsWith("Hello"))
string MyString = "Hello World";    
Console.WriteLine(MyString.EndsWith("Hello"));

Con este ejemplo se muestra False en la consola.

IndexOf y 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. 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. Si no encuentra el carácter, se devuelve un valor de –1.

En el ejemplo siguiente se usa el método IndexOf para buscar la primera aparición del carácter 'l' en una cadena.

Dim MyString As String = "Hello World"
Console.WriteLine(MyString.IndexOf("l"c))
string MyString = "Hello World";
Console.WriteLine(MyString.IndexOf('l'));

Con este ejemplo se muestra 2 en la consola.

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. Distingue mayúsculas y minúsculas y utiliza un índice de base cero.

En el ejemplo siguiente se usa el método LastIndexOf para buscar la última aparición del carácter 'l' en una cadena.

Dim MyString As String = "Hello World"
Console.WriteLine(MyString.LastIndexOf("l"c))
string MyString = "Hello World";    
Console.WriteLine(MyString.LastIndexOf('l'));

Con este ejemplo se muestra 9 en la consola.

Los dos métodos resultan útiles si se usan junto con el método String.Remove. 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 con ese carácter.

Vea también

Otros recursos

Operaciones básicas de cadenas

Realizar operaciones de cadenas que no distinguen entre referencias culturales