IndexOf C#

Com o método IndexOf podemos localizar determinado texto dentro de uma string. Para entender o que isso significa veja o exemplo:

Você tem um banco de dados de produtos. Neste banco de dados no campo nome, todos os produtos tem o seguinte formato “Produto1234 – Notebook 15 pol, 4 GB, 160HD”. Observe que você tem o texto “Produto” seguido de um código de 4 dígitos e a descrição.

Suponhamos que você precise pegar o Produto seguido do código. Bem, poderíamos utilizar Substring, no entanto, em alguns produtos, esse código não estará no inicio, por exemplo, “Câmera Digital 12 MPx Produto2345”. Então, como podemos pegar o código? Resposta: IndexOf e Substring. Se você não sabe o que é Substring clique aqui.

Veja o exemplo abaixo:



string nome = "Câmera Digital 12 MPx Produto2345";
int posicao = nome.IndexOf("Produto");
Response.Write(nome.Substring(posicao, 11));
//Imprimo na tela "Produto2345"


Na linha 1, criamos a string nome.

Na linha 2 pegamos a posição inicial da palavra produto utilizando o IndexOf, como sabemos que o código de 4 dígitos é seguido da palavra produto, então criamos na linha 3 uma Substring informando o int posicao que será a posição inicial, e o número 11(ou seja, mando ele contar 7 dígitos da palavra produto e mais 4 do código a partir da posição inicial fornecida através do IndexOf).

Gostou? Comente abaixo!

8 Comentários


  1. Muito bom, já usei a sua dica em meu código e funcionou beleza.

    Agora se eu tenho uma string 01,00229,00228,00000,n/a,n/an/an/an/a
    e quero tirar o caracter .
    E tambem nao quero caracteres alfabéticos, como fazer?

    Abraços
    ocaccy

    Responder

    1. string nome = “Leonardo 2014”;

      nome.Replace(“2014”, “”);

      OU seja ele vai pegar tudo que for 2014 e tirar…

      Use o Replace();

      Responder

  2. digamos que você digite +Bon*d ok!!

    com o método abaixo
    será exibido somente o texto
    sem os caracteres especiais

    private void button1_Click(object sender, System.EventArgs e) {
    //Aqui você pode incluir os caracteres que deseja que sejam retirados
    char[] trim = {“=”, “\\”, “;”,”.”, “:”,”,”,”+”,”*”};
    int pos;
    while ((pos = this.textBox1.Text.IndexOfAny (trim)) >= 0)
    {
    this.textBox1.Text = this.textBox1.Text.Remove (pos, 1);
    }
    }
    }

    Responder

  3. Não poderia ter uma explicação melhor que esta. Cara eu não entendia este método mas agora está muiiito claro. Obrigado

    Responder

  4. Cara simplesmente de mais, a dois dias estava procurando por isso! Simples e pratico, vlw!

    Responder

  5. Boa tarde, gostei da dica porem tenho um trabalho de faculdade onde tenho que criar um interpretador.
    Exemplo: Caso o usuário entre o seguinte código
    int x,y;
    x = 10;
    if(x>10)
    {
    y=20;
    }
    else
    {
    y=30;
    }

    o seu programa teria a seguinte saída:

    int – palavra-reservada
    x – identificador
    ,- terminal
    y – identificador
    ; terminal
    if – palavra-reservada
    ( – terminal
    x – identificador
    usando
    IndexOf consegui reconhecer else if , int float, mas como eu faria para colocar um indentificar tipo
    int x;
    como se fosse um copilador mas só preciso colocar as mensagens.
    Conseguiria me ajudar?

    Responder

  6. Muito bom o post, tirou minhas dúvidas. Muito mais prático.

    obrigado.

    Responder

  7. Pergunta: Eu gostaria de criar um contador para contar quantas vezes aparecem as palavras. Ex: banana, maça, pera, e laranja em um texto, mas preciso procurar em uma lista de arquivos na rede usando csharp. Obrigado

    Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*