Separate a string in C #

0

I'm working with C # and want to know, please how do I separate the contents of a file containing the following information:

There are 30 calories in Pumpkin (1 cup) . There are 83 calories in Pumpkin (without Salt, Canned) (1 cup) .

There are 67 calories in Vegetable Blend (Corn, Green Beans, Peas, Carrots) (without salt, canned) (1 cup) >. "

I want to get the text in bold to be passed to a variable.

EX: From line three of the file I want my variables to have the values contained there:

int calorias = 67; 
string nomeVegetal = "Mistura de Vegetais (Milho, Feijão Verde, Ervilhas,Cenouras) (sem Sal, Enlatado)";
string quantidade = (1 chávena);

Note: I have already read the file and separated by line, but in each line I am not able to separate in order to get what I want.

    
asked by anonymous 21.11.2016 / 19:49

3 answers

0

Test this code.

        var texto = "Existem 67 calorias em Mistura de Vegetais (Milho, Feijão Verde, Ervilhas,Cenouras) (sem Sal, Enlatado) (1 chávena).";
        var texto1 = texto.Replace("Existem ", "").Replace(" calorias em ","|");
        var resultado = texto1.Split('|');


        var asdf1 = resultado[1].ToArray();
        var ultimoParenteses = 0;
        for (int i = 0; i < asdf1.Length; i++)
        {
            if (asdf1[i].Equals('('))
            {
                ultimoParenteses = i;
            }
        }

        var calorias = resultado[0];
        var nomeVegetal = resultado[1].Substring(0, ultimoParenteses);
        var quantidade = resultado[1].Substring(ultimoParenteses, resultado[1].Length - ultimoParenteses);
    
21.11.2016 / 20:17
1

I believe that this way you can solve your problem starting from the principle that you have the line as described.

var linha = "Existem 30 calorias em Abóbora (1 chávena).";
var palavras = linha.split(" ");
int calorias = int32.parse(palavras[1]);
string nomeVegetal = "";
for(int i = 4; i > calorias.lenght -1; i++){
    nomeVegetal += calorias[i] + " ";
} 
string quantidade = palavras[palavras.lenght-1]; 
    
21.11.2016 / 20:00
1

First separate by lines, then by fixed strings.

In your case, numeric values are in the second position if we use a blank as the separation criterion, and the name in the second position separates by "calorias em " .

Functional version in .NetFiddle .

Your result will be:

usingSystem;usingSystem.Linq;publicclassProgram{publicstaticvoidMain(){varsrc=@"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).";


        var linhas = src.Split((char)10).ToList(); // Transforma a string em um 
                                                   // array com 3 linhas.


        for (int i = 0; i < linhas.Count(); i++)
        {
            var qt = linhas[i].Split(' ')[1];
            var nm = linhas[i].Split(new string[] { "calorias em " }, StringSplitOptions.None)[1];

            Console.WriteLine(qt + ":" + nm);   
        }
    }
}
    
21.11.2016 / 20:28