Separate a string in C#

Asked

Viewed 1,182 times

0

I’m working with C# and I want to know, please, how do I separate the contents of a q file contains 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 Mixture of Vegetables (Corn, Green Beans, Peas, Carrots) (without Salt, Canned) (1 cup). "

I want to get the bold text 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 read the file and sorted by line, but on each line I am not able to separate in order to get what I want.

  • You need to get the number (that precedes the word calories) also?

3 answers

1

I believe that so you can solve your problem assuming 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]; 

1

First separate by lines, then by fixed strings.

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

Functional version in . Netfiddle.

Your result will be:

inserir a descrição da imagem aqui

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var src = @"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);   
        }
    }
}

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);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.