Como recuperar o índice de um caractere com a função Substring independentemente de seu case em uma frase
O método IndexOf da classe String é case-sensitive. Existem 2 maneiras possíveis de contornar este problema:
- Converter o case da frase inteira e da substring para qualquer outro case e, então, achar o índice do caracter em particular.
Dim strPrincipal As String = "A .net Magazine é bem informativa."
Dim strSecundaria As String = "magazine"
' A linha abaixo retornará -1 quando o esperado é 7.
Dim i As Integer = strPrincipal.IndexOf(strSecundaria)
' A linha abaixo retornará o índice correto
Dim j As Integer =
strPrincipal.ToLower().IndexOf(strSecundaria.ToLower())
- Utilizar o método substring da classe CompareInfo do namespace System.Globalization. Esta é uma maneira mais profissional e elegante de resolver o problema.
Dim strPrincipal As String = "A .net Magazine é bem informativa."
Dim strSecundaria As String = "magazine"
' Criamos um objeto da classe CompareInfo para uma cultura neutra
ou uma cultura case-insensitive
Dim Compare As CompareInfo = _
CultureInfo.InvariantCulture.CompareInfo
Dim i As Integer = Compare.IndexOf(strPrincipal, strSecundaria, _
CompareOptions.IgnoreCase)