Bom, o que eu gostaria era conseguir extrair estes objetos com seus campos e respectivos comentarios(eles variam em numero de campos). Montar os objetos é tranquilo, estou com dificuldade em manipular estas strings
A minha idéia era ler linha a linha e em seguida montar um split com regex de virgula, exclamacao e traço, ponto e virgula. Mas estou com dificuldades de montar o REGEX completo.
Se alguém tiver uma idéia ou puder me ajudar com o regex do split, eu ficaria grato.
Na sua propria pergunta você citou a solução, é apenas colocar um split(";");
Não entendi de fato aonde está o problema, mas segue abaixo um exemplo que fiz… veja se é isto.
String[] objDados = str.split(";");
for (String dado: objDados)
System.out.println(dado);
}[/code]Outro detalhe, você vai precisar criar de um controle para as linhas que é “Objeto1”, “Objeto2”, pois no exemplo acima, so é tratado a linha de “dados”.
ficaria dessa forma:
[i]Objeto1,campo1; !- comentariocampo2; !- comentario [i]
Eu preciso separar:
“Objeto1”
e seus campos com comentarios:
“campo1” “comentario1”
“campo2” “comentario2”
Imagino que são vários tratamentos manipulando a strings(blz… vamos quebrar a cabeça). Mas queria saber se dá pra botar um regex que consigo fazer essas separacoes.
Vou pensando aqui, e se der certo boto a solução na unha.
[ ]
Observações:
o número de campos varia para cada objeto.
no último campo tem um “;” porém não termina pois ainda é preciso ler o comentário respectivo ao último campo.
ficaria dessa forma:
[i]Objeto1,campo1; !- comentariocampo2; !- comentario [i]
Eu preciso separar:
“Objeto1”
e seus campos com comentarios:
“campo1” “comentario1”
“campo2” “comentario2”
Imagino que são vários tratamentos manipulando a strings(blz… vamos quebrar a cabeça). Mas queria saber se dá pra botar um regex que consigo fazer essas separacoes.
Vou pensando aqui, e se der certo boto a solução na unha.
[ ]
[/quote]
cafezin, não entendí o que você quer fazer…
Como assim pegar o comentário do campo!? Pode ser mais claro?
comentario5 Obj2
[/code]Por favor verifique se é isto que precisa… !! caso não seja… eu tenho algumas questões sobre sua dúvida.
Depois que você pegar estes dados vai jogar para algum objeto? o que vai fazer com isto?
Pode vim mais de um comentário ou campo na mesma linha? Assim campo1, campo2 !- comentario1, comentario2 (Pelo que eu entendi não pode).
Mas a principio valide isto que te enviei e no final vamos nos acertando referente sua dúvida e a solução para seu problema.
Não testei ainda, mas se sua saída foi isso, está correto.
Só faltou um detalhe no seu arquivo.
Em Objeto1 e Objeto2 contém virgula no final.
Ex: Objeto1,
Objeto2,
Sobre suas perguntas…
Sim, vou popular um objeto que possui nome e campos. Pode ser algo do tipo:
[code]Objeto
nome: String
campos: List
gettter n setters
Campo
valor: String
comentario: String
gettter n setters[/code]
E sobre a outra pergunta, é isso mesmo vc entendeu correto. Não pode mais de um campo ou comentario em uma linha.
Legal que conseguimos chegarmos na solução. Referente pegar a virgula é so mudar a expressão regular “Objeto[0-9]+” para isto por exemplo “Objeto.*”
Só mais um detalhe, o código que eu coloquei tem bastante coisa que precisa ser mudada e melhorada… por exemplo os métodos são estáticos e não tem utilidade nenhuma eles serem estáticos, só fiz para facilitar o exemplo.
Neste caso é interessante dar uma melhorada no código e apenas utilizar a idéia.
Legal que conseguimos chegarmos na solução. Referente pegar a virgula é so mudar a expressão regular “Objeto[0-9]+” para isto por exemplo “Objeto.*”
Só mais um detalhe, o código que eu coloquei tem bastante coisa que precisa ser mudada e melhorada… por exemplo os métodos são estáticos e não tem utilidade nenhuma eles serem estáticos, só fiz para facilitar o exemplo.
Neste caso é interessante dar uma melhorada no código e apenas utilizar a idéia.
Att[/quote]
Ah faltou um detalhe…
Os objetos não terão nomes de Objeto, eles podem assumir qualquer nome.
Como no exemplo do post que coloquei lá atrás
[i]Pessoa,
nome; !- Campo para se colocar o nome(isso é um comentario)
idade; !- Campo para se colocar a idade
Livro,
nome; !- comentario sobre o campo nome
capaDura; !- comentario sobre o campo capaDura[/i]
Portanto o Pattern Objeto[0-9] nao rola. Teria de ser qualquer String.
Uma maneira que pensei foi pegar sempre o que vem após a uma linha toda vazia.