Usuário com melhor resposta
Separar um string

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
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".
- Editado Juliano Nunes Silva Oliveira segunda-feira, 21 de novembro de 2016 23:27 Adicionando mais uma forma de resolver o problema
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 23 de novembro de 2016 11:46
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".
- Editado Juliano Nunes Silva Oliveira segunda-feira, 21 de novembro de 2016 23:27 Adicionando mais uma forma de resolver o problema
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 23 de novembro de 2016 11:46
-
-
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.