• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dporem

Parse a texto [Solved]

7 mensagens neste tópico

Boas

tou a fazer um programa em que tenho de retirar um valor de uma string, a string é:

<Viewpoint DEF="ID9984900_1" description="Entrada" fieldOfView="0.785398" position="-10.0 6.0 -10.0" orientation="0 1 0 3.14"/>

e o valor é o que ta a sublinhado.

Tenho este código feito:

int posicao = x3dText.LastIndexOf("position=\"");

isto permite-me começar onde realmente interessa, o meu maior problema é que não acho maneira de trabalhar mais o texto para ir buscar o que me dá jeito...

Alguma sugestão?

Thanks ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sinceramente não gosto muito de trabalhar assim porque fica tudo muito 'sensivel' e uma simples alteração pode fazer com que tudo deixe de funcionar.

Ainda assim...tens ai várias opções. Se fosse eu provavelmente arranjava maneira de obter o valor do campo position (o que está entre aspas) e depois dividia (split) o texto usando como delimitador o caracter espaço (" "). Punha numa array e tirava a posição pretendida, neste caso a 2ª.

Como provavelmente os valores podem variar e por consequência aumentar ou alterar os índices, o melhor é talvez tirares desde o índice de "position=\"" até à próxima aspa.

Espero ter ajudado.

Cumprimentos.

edit:

http://msdn.microsoft.com/en-us/library/system.string.split.aspx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, eu também não gosto nada, mas isto é tudo dinâmico e não tenho grandes alternativas...

Obrigado pela dica do split, mas o meu problema é mesmo indicar que só quero ate a próxima aspa :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, eu também não gosto nada, mas isto é tudo dinâmico e não tenho grandes alternativas...

Obrigado pela dica do split, mas o meu problema é mesmo indicar que só quero ate a próxima aspa :S

Experimenta assim:

            string str = "<Viewpoint DEF=\"ID9984900_1\" description=\"Entrada\" fieldOfView=\"0.785398\" position=\"-10.0 6.0 -10.0\" orientation=\"0 1 0 3.14\"/>";


            string newstr = str.Substring(str.IndexOf("position"), str.IndexOf("orientation") - str.IndexOf("position"));
            newstr = newstr.Substring(newstr.IndexOf("\"") + 1, newstr.LastIndexOf("\"") - newstr.IndexOf("\"") - 1);

            MessageBox.Show(str + Environment.NewLine + newstr);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse "orientation" as vezes não ta la... :S (e pode tar la outra coisa qualquer)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse "orientation" as vezes não ta la... :S (e pode tar la outra coisa qualquer)

lol podias ter dito logo...deixa-me ver.

edit:

         

            string str = "<Viewpoint DEF=\"ID9984900_1\" description=\"Entrada\" fieldOfView=\"0.785398\" position=\"-10.0 6.0 -10.0\" orientation=\"0 1 0 3.14\"/>";
            string newstr = "";

            newstr = str.Substring(str.IndexOf("position"), str.Length - str.IndexOf("position"));
            newstr = newstr.Remove(0, newstr.IndexOf("\"") + 1);
            newstr = newstr.Substring(0, newstr.IndexOf("\""));

            MessageBox.Show(str + Environment.NewLine + newstr);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era isto mesmo, Muito Obrigado... Tive uma boa parte da tarde de volta disso, e com este trabalho pa entregar ate sábado ja tava a ficar desesperado lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora