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:

 

  1. 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())

 

  1. 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)