Obs: no lugar dos .(pontos) é um espaço(" "), como sou novo aqui não achei um melhor jeito de deixar os espaços, o proprio forúm apaga os espaços deixando apenas um.
ai que esta o problema, o espaço entre cada valor não é fixo.
no caso a String seria assim:
Stringvalor="00001 10:49:57 17/9/2010 -25,7";
com tamanho de espaço diferente entre cada valor.
D
Daniel_Hideki
ulysses:
guilhermehkr
ai que esta o problema, o espaço entre cada valor não é fixo.
no caso a String seria assim:
Stringvalor="00001 10:49:57 17/9/2010 -25,7";
com tamanho de espaço diferente entre cada valor.
Olá,
Tenta dar um replace primeiro, tipo assim:
String valor = "00001 10:49:57 17/9/2010 -25,7";
valor.replaceAll(" ","|");//essa barra | é para facilitar o split
valor.split("|");
Cara, não testei esse código mas acho que dá certo!
Tenta aí e depois posta o resultado ok?
Espero ter ajudado!
Abraços;
Daniel…
jaboot
Meu, usem o apache-commons (StringUtils)… tem várias coisas prontas.
Uma pergunta: esses dados no txt vem sempre na mesma posição? Se sim, facilita a sua vida demais.
guilhermehkr
Sendo assim, imagino que você não poderá usar split, afinal ele se baseia em uma regex para separar a string - me corrijam se estiver falando besteira.
Até onde vai meu conhecimento em String, que é pouco, diria que você terá que fazer na mão.
denisspitfire
vamos fazer uma gambiarra…
se de caracter em caracter voce achar o primeiro espaço voce substitui ele por um “;” depois até voce achar um caracter diferente de " " elimine o caracter. fique nesse loop até terminar a string
jaboot
Se for posições fixas, ele pega a linha inteira e dá um substring no que precisar.
guilhermehkr
O que o jaboot disse é verdade.
Utilizar o ApacheUtils é muito bom!
Utilizando o replace, você consegue colocar um outro delimitador de palavra em cada bloco de espaço.
Por exemplo: Se na primeira coluna você tem 4 espaços em branco e na segunda 3 espaços e sempre for assim em todas as linhas, você pode dar dois replaces!
U
ulysses
Daniel Hideki:
Olá,
Tenta dar um replace primeiro, tipo assim:
String valor = "00001 10:49:57 17/9/2010 -25,7";
valor.replaceAll(" ","|");//essa barra | é para facilitar o split
valor.split("|");
Cara, não testei esse código mas acho que dá certo!
Tenta aí e depois posta o resultado ok?
Espero ter ajudado!
Abraços;
Daniel…
testei aqui, apenas substitui os espaços por “|” , deu na mesma.
jaboot:
Meu, usem o apache-commons (StringUtils)… tem várias coisas prontas.
Uma pergunta: esses dados no txt vem sempre na mesma posição? Se sim, facilita a sua vida demais.
sim, ele vem sempre na mesma posição, existe algum outro metodo que posso usar sem ser o split??
U
ulysses
denisspitfire:
vamos fazer uma gambiarra…
se de caracter em caracter voce achar o primeiro espaço voce substitui ele por um “;” depois até voce achar um caracter diferente de " " elimine o caracter. fique nesse loop até terminar a string
mais ai não pesa a aplicação? pois ela é muito grande, essa parti é apenas um pequeno pedaço dela.
mas a sua logica foi boa, posso tentar essa solução se não achar um metodo mais simples.
U
ulysses
guilhermehkr:
O que o jaboot disse é verdade.
Utilizar o ApacheUtils é muito bom!
Utilizando o replace, você consegue colocar um outro delimitador de palavra em cada bloco de espaço.
Por exemplo: Se na primeira coluna você tem 4 espaços em branco e na segunda 3 espaços e sempre for assim em todas as linhas, você pode dar dois replaces!
não sei muito a respeito do ApacheUtils,
tem algum livro ou artigo que possa me indicar?
denisspitfire
ulysses:
denisspitfire:
vamos fazer uma gambiarra…
se de caracter em caracter voce achar o primeiro espaço voce substitui ele por um “;” depois até voce achar um caracter diferente de " " elimine o caracter. fique nesse loop até terminar a string
mais ai não pesa a aplicação? pois ela é muito grande, essa parti é apenas um pequeno pedaço dela.
mas a sua logica foi boa, posso tentar essa solução se não achar um metodo mais simples.
De qualquer forma o split vai fazer exatamente isso… talvez tenha um algoritmo mais rapido, porém, quando o prazo de entrega aperta… vai na POG mesmo
nel1 like
Oi,
faça assim:
String[]array=linha.split("[ ]");
Abraços.
mapleplayer
Olá.
Primeiramente gostaria de dizer obrigado por me fornecer este desafio nesta manhã de quarta-feira.
A primeira vista achei que seria simples mas deu um trabalho legal de resolver.
Fiz usando regex para seus dados ficarem simples para fazer um split como todos sugerem.
Meu código ficou assim.
// Representa os dados no seu arquivoStringdados="00001 10:49:57 17/9/2010 -25,7\n"+"00002 10:50:00 17/9/2010 -25,7\n"+"00003 10:50:03 17/9/2010 -25,7\n"+"00004 10:50:06 17/9/2010 -25,7\n"+"00005 10:50:09 17/9/2010 -25,7";try{Patternp=Pattern.compile("\\s{2,}");// quero procurar por dois ou mais espacos em branco na StringMatcherm=p.matcher(dados);System.out.println(dados);// Exibe como esta a String atualmenteSystem.out.println();dados=m.replaceAll(" ");// Acima substituo todas Strings que sao iguais ao que defini no regex por apenas um espaco em brancoSystem.out.println(dados);// Exibe seus dados apos a alteracao// TODO Fazer o split dos dados usando o espaco em branco como separador}catch(Exceptione){e.printStackTrace();}
Para testar nao esqueca de fazer os imports corretos.
guilhermehkr
ulysses:
guilhermehkr:
O que o jaboot disse é verdade.
Utilizar o ApacheUtils é muito bom!
Utilizando o replace, você consegue colocar um outro delimitador de palavra em cada bloco de espaço.
Por exemplo: Se na primeira coluna você tem 4 espaços em branco e na segunda 3 espaços e sempre for assim em todas as linhas, você pode dar dois replaces!
não sei muito a respeito do ApacheUtils,
tem algum livro ou artigo que possa me indicar?
ulysses, cada coluna tem uma quantidade de espaço diferente, porém quando muda de linha esta quantidade de espaço se mantém a mesma para cada coluna!?
Se você tiver pelo menos esta padrão, você pode fazer na mão com replaces!
guilhermehkr
Parabéns mapleplayer, realmente esta solução ficou muito boa.
Testei aqui e irei guardar a solução!
Espero que ajude o relator do tópico.
Abraços.
B
Bruno_Laturner
Senhores, o String.split recebe uma RegEx, não um caracter.
Se quiser que ele separa por vários espaços ou outros caracteres em branco:
Aliás, é uma boa hora para começar a aprender Regular Expressions, vocês vão utilizá-la em quaisquer transformações envolvendo Strings, pelo resto da sua vida. Recomendo os livros do Piazinho.
U
ulysses
mapleplayer muito obrigado funcionou perfeitamente esta de parabéns cara.
essa sua solução vai ajudar muitos
guilhermehkr
vlw pela ajuda tbm
Abraços.
U
ulysses
Bruno Laturner:
Senhores, o String.split recebe uma RegEx, não um caracter.
Se quiser que ele separa por vários espaços ou outros caracteres em branco:
Aliás, é uma boa hora para começar a aprender Regular Expressions, vocês vão utilizá-la em quaisquer transformações envolvendo Strings, pelo resto da sua vida. Recomendo os livros do Piazinho.
Bruno o seu tbm funcionou perfeitamente muito obrigado :D
só acrescentei o systemout no final para fazer teste
...
String minhaString = "aaa aa a";
System.out.println("minhaString sem espaços: " + minhaString.replaceAll("\\s{1,}",","));
...Saída:
minhaString sem espaços: aaa,aa,a
É isso que você quer, né?
Abraço!
Lucas_Abbatepaolo
Cara…deu ate medo algumas ideias que postaram aqui…
creio que este seja o ideal…na MINHA OPINIÂO semanticamente mais simples e facil de entende…
String[]separados=linha.split("\\s+");
se ja foi solucionado coloque como [RESOLVIDO]
[]'s
guilhermehkr
Qual é o problema Lucas?!
Ta com medo do que?!
Cara, se a gente deu ideias furadas, é porque não sabemos, e se não sabemos estamos aqui para aprender mano.
Se você se acha top, respondesse você, mas como não tinha ninguem tão “fod4” como você, tentamos ajudar da forma que pudemos!
Se liga maluco, se ponha no seu lugar.
Mantenha a pouca humildade que lhe resta!
R
Roberto_Precoce
Lucas Abbatepaolo:
Cara…deu ate medo algumas ideias que postaram aqui…
creio que este seja o ideal…na MINHA OPINIÂO semanticamente mais simples e facil de entende…
String[]separados=linha.split("\\s+");
se ja foi solucionado coloque como [RESOLVIDO]
[]'s
Quanta deselegancia em amigo.
Na sua assinatura também faltou colocar “Rumo a humildade”.
abs,
Lucas_Abbatepaolo
Pq…so pq comentei q deu medo???rs
foi so uma brincadeira …não fica bravo…
é que muita gente procura soluções por aqui…e muitos não buscam a melhor solução …então alguem que entra aqui meio nas pressas e pega a primeira dica que ve acredita que esta fazendo o certo e as vezes não é a melhor opção…
por isso EU evito de dar dicas e ideias mirabolantes e costumo RECOMENDAR que façam o mesmo…
depois vou arrumar a assinatura…pode deixar…
[]'s
U
ulysses
prontinho já coloquei resolvido.
Lucas Abbatepaolo
realmente muita gente só olha a primeira página achando que lá esta a melhor solução
garanto que aqui muita gente aprendeu alguma coisa, estamos aqui é para isso aprender mais
buscar mais conhececimento e nos ajudar uns aos outros.
Muito obrigado a todos pela ajuda.
Abraços.
Lucas_Abbatepaolo
guilhermehkr:
Qual é o problema Lucas?!
Ta com medo do que?!
Cara, se a gente deu ideias furadas, é porque não sabemos, e se não sabemos estamos aqui para aprender mano.
Se você se acha top, respondesse você, mas como não tinha ninguem tão “fod4” como você, tentamos ajudar da forma que pudemos!
Se liga maluco, se ponha no seu lugar.
Mantenha a pouca humildade que lhe resta!
Se liga vc “maluco”… não me gabei em nenhum momento e não sei pq vc ficou todo magoado ai…
É por causa de pessoas como vc que os q ja tem uma certeza experiencia optão por não responder questões mais simples … pelo simples motivo de que quando damos a opnião, frustados como vc vem cheio de dar lição de moral sobre humildade…