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.IndexOf (String, Int32)

 

Publicado: octubre de 2016

Indica el índice de base cero de la primera aparición de la cadena especificada en la instancia en cuestión. La búsqueda comienza en una posición de carácter especificada.

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

public int IndexOf(
	string value,
	int startIndex
)

Parámetros

value
Type: System.String

Cadena que se va a buscar.

startIndex
Type: System.Int32

Posición en la que comienza la búsqueda.

Valor devuelto

Type: System.Int32

Posición de índice de base cero de value desde el principio de la instancia actual si se encuentra esa cadena o, de lo contrario, -1. Si value es String.Empty, el valor devuelto es startIndex.

Exception Condition
ArgumentNullException

El valor de value es null.

ArgumentOutOfRangeException

startIndex es menor que 0 (cero) o mayor que la longitud de esta instancia.

Numeración del índice empieza en 0. El parámetro startIndex puede estar comprendido entre 0 y la longitud de la instancia de cadena. Si startIndex es igual a la longitud de la instancia de cadena, el método devuelve -1.

Este método realiza una búsqueda de palabras (distingue mayúsculas de minúsculas y la referencia cultural) utilizando la referencia cultural actual. La búsqueda comienza en la startIndex posición de esta instancia de carácter y continúa hasta la última posición de carácter.

Los juegos de caracteres incluyen caracteres que se pueden pasar por alto, que son los caracteres que no se tienen en cuenta al realizar una comparación lingüística o en la que se tiene en cuenta la referencia cultural. En una búsqueda que tiene en cuenta la referencia cultural, si value contiene un carácter que se puede pasar por alto, el resultado es equivalente a buscar sin ese carácter. Si value sólo consiste en uno o más caracteres pueden pasar por alto la IndexOf(String, Int32) método siempre devuelve startIndex, que es la posición del carácter donde comienza la búsqueda. En el ejemplo siguiente, la IndexOf(String, Int32) método se usa para buscar la posición de un guion (00AD) seguida de una "m" de dos cadenas. Solo una de las cadenas contiene la subcadena necesaria. Si se ejecuta el ejemplo en la .NET Framework 4 o posterior, en ambos casos, como el guion virtual es un carácter puede pasar por alto, el método devuelve el índice de "m" en la cadena. Observe que en el caso de la primera cadena, que incluye el guion virtual seguido de una "m", el método no devuelve el índice del guion virtual, sino el índice de "m".

using System;

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

      Console.WriteLine(s1.IndexOf(searchString, 2));
      Console.WriteLine(s2.IndexOf(searchString, 2));
   }
}
// The example displays the following output:
//       4
//       3

Notas para llamadores:

Como se explica en Procedimientos recomendados para el uso de cadenas en .NET Framework, recomendamos que evite llamar a métodos de comparación de cadenas que sustituyen valores predeterminado y en su lugar, llame a métodos que requieren parámetros para especificarse explícitamente. Para encontrar el primer índice de una subcadena que se produce después de una posición de caracteres determinada usando reglas de comparación de la referencia cultural actual, llame a la IndexOf(String, Int32, StringComparison) sobrecarga del método con un valor de StringComparison.CurrentCulture para su comparisonType parámetro.

En el siguiente ejemplo busca todas las apariciones de una cadena especificada dentro de una cadena de destino.

using System;

public class IndexOfTest {
    public static void Main() {

        string strSource = "This is the string which we will perform the search on";

        Console.WriteLine("The search string is:{0}\"{1}\"{0}", Environment.NewLine, strSource);

        string strTarget = "";
        int found = 0;
        int totFinds = 0;

        do {
            Console.Write("Please enter a search value to look for in the above string (hit Enter to exit) ==> ");

            strTarget = Console.ReadLine();

            if (strTarget != "") {

                for (int i = 0; i < strSource.Length; i++) {

                    found = strSource.IndexOf(strTarget, i);

                    if (found >= 0) {
                        totFinds++;
                        i = found;
                    }
                    else
                        break;
                }
            }
            else
                return;

            Console.WriteLine("{0}The search parameter '{1}' was found {2} times.{0}",
                    Environment.NewLine, strTarget, totFinds);

            totFinds = 0;

        } while ( true );
    }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
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: