[quote=neohacker]Cara então acho que a única solução (se alguém souber outra vamos lá) é partir pra análize lexicográfica, porque se vc nem sabe como vai vim o arquivo, somente a ordem dos campos fica difícil
Boa Sorte :)[/quote]
Eu sei como o arquivo vem. Ele sempre vem da mesma forma.
codigo + espaços em branco + nome + espaços em branco + endereço + espaços em branco + …
Então silva.fernandes, mas ele disse que precisa pegar o 3º conjunto de caracteres, dessa forma ele precisa conhecer o que está escrito no campo, não é ??
Acho que ele vai ter que fazer a busca pela String procurando pelo 1º caracter e parar após ter por exemplo 3 espaçoes em branco. o que vc acha ??
[quote=neohacker]Então silva.fernandes, mas ele disse que precisa pegar o 3º conjunto de caracteres, dessa forma ele precisa conhecer o que está escrito no campo, não é ??
Acho que ele vai ter que fazer a busca pela String procurando pelo 1º caracter e parar após ter por exemplo 3 espaçoes em branco. o que vc acha ??
8)[/quote]
O problema é que os dados tbm aceitam espaços em branco, o risco disso está em se existir um nome assim:
public class Teste {
public static void main(String[] args) {
String str = "01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587";
String[] arr = str.split("\s\s+");
for (String s : arr) {
System.out.println(s);
}
}
}
Acredito que isto deve resolver o problema. Onde ter no minimo 2 espaços ele quebra em uma posição do Array.
Cara pra mim este arquivo esta posicional e não sequencial como vc tinha dito, isso quer dizer que ele sempre estará no msm lugar, pelo menos foi o que eu percebi, estou errado ??
Cara seu arquivo ta por posição de caracteres, não tem nenhum segredo trabalhar com isso… já trabalhei assim… eles tem um tamanho único e quando não completam esse tamanho, preenchem de espaço em branco.
Com o substring você resolve isso molinho…
[quote=leandroqbs]Cara seu arquivo ta por posição de caracteres, não tem nenhum segredo trabalhar com isso… já trabalhei assim… eles tem um tamanho único e quando não completam esse tamanho, preenchem de espaço em branco.
Com o substring você resolve isso molinho…[/quote]
[quote=thingol]Se isso for um arquivo posicional (por exemplo, o endereço “Rua dos Prazeres” fica nas posições de 36 a 56), você pode usar:
0000000000111111111122222222223333333333444444444455555555556666666666
0123456789012345678901234567890123456789012345678901234567890123456789
01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587
String registro = "01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587";
String endereco = registro.substring (36, 56+1);
Só lembrando que em Java a primeira posição é 0.
[/quote]
o método split não vai resolver, pois ele pode ter um nome composto que foi separado acidentalmente por tab… to dizendo, esse arquivo é posicional, pode usar o substring que é garantido, já trabalhei com arquivos assim…
Eu já dei o exemplo com substring (aquele com “substring (36, 56-1)” ou coisa parecida alguns posts atrás.
Agora faça a sua parte.
Pegue o arquivo que você recebeu, veja onde começam as posições, e boa sorte!
0000000000111111111122222222223333333333444444444455555555556666666666
0123456789012345678901234567890123456789012345678901234567890123456789
01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587
é que isso é um macete para descobrir onde é que começam e terminam os campos. Por exemplo, para ver onde começa e termina o campo “nome” (no caso “Rafael Antonio”), basta ver os números acima.