none
Separar um string RRS feed

  • Pergunta

  • Boa noite! Estou a trabalhar com C# e quero saber , por favor, como faço para separar o conteúdo de um ficheiro q contém a seguinte informação:

    Existem 30 calorias em Abóbora (1 chávena).
    Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).

    Existem 67 calorias em Mistura de Vegetais (Milho, Feijão Verde, Ervilhas,Cenouras) (sem Sal, Enlatado) (1 chávena). "

    Quero obter os textos a negrito para serem passados para uma variável.

    EX: Da linha três do ficheiro quero que as minhas variáveis tenham os valores lá contidos:

    int calorias = 67;

    string nomeVegetal = "Mistura de Vegetais (Milho, Feijão Verde, Ervilhas,Cenouras) (sem Sal, Enlatado)";

    string calorias = (1 chávena);

    Nota: Já li o ficheiro e separei por linha, mas em cada linha não estou a conseguir separar de forma a obter o que eu quero.

    Obrigada

    segunda-feira, 21 de novembro de 2016 18:53

Respostas

  • Para cada linha eu faria da seguinte forma:

    var linha = "Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).";
    
    linha = linha.Replace("Existem ", ""); // Removendo o início
    linha = linha.Replace(" calorias em ", "|");
    
    var dados = linha.Split(new char[] { '|' }),

    Daí você consegue acessar cada parte pelo índice, tipo dados[0] para calorias e dados[1] para nomeVegetal.

    Atualizado

    Segue uma outra forma de fazer utilizando Expressões Regulares:

    public static void Main()
    	{
    		var linha = "Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).";
    		var regex = new Regex("Existem (?<cal>\\d+) calorias em (?<alim>.*)");
    		Match match = regex.Match(linha);
    		
    		if (match.Success)
    		{
    			Console.WriteLine(match.Groups["cal"].Value);
    			Console.WriteLine(match.Groups["alim"].Value);
    			
    		}
    	}


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    segunda-feira, 21 de novembro de 2016 19:03

Todas as Respostas

  • Para cada linha eu faria da seguinte forma:

    var linha = "Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).";
    
    linha = linha.Replace("Existem ", ""); // Removendo o início
    linha = linha.Replace(" calorias em ", "|");
    
    var dados = linha.Split(new char[] { '|' }),

    Daí você consegue acessar cada parte pelo índice, tipo dados[0] para calorias e dados[1] para nomeVegetal.

    Atualizado

    Segue uma outra forma de fazer utilizando Expressões Regulares:

    public static void Main()
    	{
    		var linha = "Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).";
    		var regex = new Regex("Existem (?<cal>\\d+) calorias em (?<alim>.*)");
    		Match match = regex.Match(linha);
    		
    		if (match.Success)
    		{
    			Console.WriteLine(match.Groups["cal"].Value);
    			Console.WriteLine(match.Groups["alim"].Value);
    			
    		}
    	}


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    segunda-feira, 21 de novembro de 2016 19:03
  • Ola, boa tarde

    string linha = "Existem 83 calorias em Abóbora (sem Sal, Enlatado) (1 chávena).";
                int calorias = Convert.ToInt32(linha.Substring(8, 2));
                string nomeVegetal = linha.Substring(10);

    Espero que ajude! abs

    segunda-feira, 21 de novembro de 2016 19:36
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 23 de novembro de 2016 11:46
    Moderador