Resumo : neste tutorial, você aprenderá como usar o IndexOf()
método C# String para retornar a posição da primeira ocorrência de uma string especificada dentro da string atual.
Introdução ao método C# String IndexOf()
O método String IndexOf()
permite verificar se uma string está presente na string atual:
public int IndexOf (string value);
Linguagem de código: C# ( cs )
O IndexOf()
método aceita um parâmetro value
que é uma string a ser pesquisada. Ele retorna a posição da primeira ocorrência da string value
na string atual.
Se a string value
não estiver presente na string atual, o IndexOf()
método retornará -1
.
Para determinar se uma string existe dentro de outra string sem recuperar sua posição, você pode usar o Contains()
método.
O exemplo a seguir usa o IndexOf()
método para obter a posição inicial da string "is"
na string "C# is awesome"
:
using static System.Console;
var message = "C# is awesome";
var index = message.IndexOf("is");
WriteLine(index);
Linguagem de código: C# ( cs )
Saída:
3
Linguagem de código: C# ( cs )
Por padrão, o IndexOf()
método usa a comparação ordinal que considera a distinção entre maiúsculas e minúsculas e a insensibilidade à cultura para comparação de strings.
Por exemplo, o programa a seguir gera -1
porque a string "IS"
que é a letra maiúscula da string "is"
não está presente na string "C# is Awesome"
:
using static System.Console;
var message = "C# is awesome";
var index = message.IndexOf("IS");
WriteLine(index);
Linguagem de código: C# ( cs )
Saída:
-1
Linguagem de código: C# ( cs )
Para comparar strings com distinção entre maiúsculas e minúsculas, você usa a seguinte sobrecarga do IndexOf()
método:
public int IndexOf (
string value,
StringComparison comparisonType
);
Linguagem de código: C# ( cs )
Neste método, the comparisonType
é um dos valores do StringComparison
enum.
Por exemplo, o seguinte usa o StringComparison.OrdinalIgnoreCase
que ignora maiúsculas e minúsculas das strings ao compará-las:
using static System.Console;
var message = "C# is awesome";
var index = message.IndexOf("IS", StringComparison.OrdinalIgnoreCase);
WriteLine(index);
Linguagem de código: C# ( cs )
Saída:
3
Linguagem de código: C# ( cs )
Por padrão, o IndexOf()
método começa a procurar uma substring desde o início de uma string. Para começar a procurar uma substring em uma posição de caractere especificada, use a seguinte sobrecarga do IndexOf()
método:
public int IndexOf (
char value,
int startIndex
);
Linguagem de código: C# ( cs )
Nesta sintaxe, startIndex
especifica o índice inicial para pesquisar o valor da string na string atual.
Por exemplo, o seguinte usa o IndexOf()
método para encontrar o índice da segunda posição da string "se"
na string "She sees the sea"
:
using static System.Console;
var message = "She sees the sea";
var index = message.IndexOf("se");
if(index != -1)
{
var secondIndex = message.IndexOf("se", index + 1);
WriteLine(secondIndex);
}
Linguagem de código: C# ( cs )
Saída:
13
Linguagem de código: C# ( cs )
Para procurar uma string dentro de uma substring em um índice especificado dentro de um número de posições de caracteres, você usa a seguinte sobrecarga do método IndexOf():
public int IndexOf (
string value,
int startIndex,
int count
);
Linguagem de código: C# ( cs )
Nesta sintaxe, the count
é o número de posições de caracteres a serem pesquisadas.
O exemplo a seguir usa o count
parâmetro para procurar a segunda ocorrência da string "se"
na string "She sees the sea"
dentro de 5 posições de caracteres:
using static System.Console;
var message = "She sees the sea";
var index = message.IndexOf("se");
if (index != -1)
{
var secondIndex = message.IndexOf("se", index + 1, 5);
WriteLine(secondIndex);
}
Linguagem de código: C# ( cs )
Saída:
-1
A saída do programa -1
porque dentro de 5 posições de caracteres a partir de index+1
, não há ocorrência da string "se"
na string pesquisada.
Resumo
- Use o método C# String
IndexOf()
para encontrar o índice baseado em zero da primeira ocorrência de uma string dentro da string atual.