String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?
String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?
pela informação fornecida até agora:
substring(int, int);

Examples:
"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"
Arquivo posicional ??
Essa informação sempre estará começando no msm lugar e terminando no msm lugar :?:
pela informação fornecida até agora:substring(int, int);
Examples:
"hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile"
Não é bem isso que eu estou procurando.
suponha que a String é a seguinte:
"01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587"
Eu gostaria de pegar o nome “RUA DOS PRAZERES”.
entenderam agora?
String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?
q String mais esquisita cara… ela vai ser assim mesmo???
Caso a resposta a pergunta que o colega aí de cima fez seja positiva, você pode dar um split usando o delimitador (o que me parece ser um tab ‘\t’) e na possição x do vetor estaria o que você quer!
Arquivo posicional ??
Essa informação sempre estará começando no msm lugar e terminando no msm lugar :?:8)
sim eh sequencial
Então, como citado pelo thiago.correa caso não seje um [tab] você poderia usar uma regular expression para “mapear” essa sua string e retornar oque você precisa.
[]s
String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?
q String mais esquisita cara… ela vai ser assim mesmo???
Sim pois ela vem de um arquivo externo no formato .txt gerado a partir de um outro sistema.
Então, como citado pelo thiago.correa caso não seje um [tab] você poderia usar uma regular expression para “mapear” essa sua string e retornar oque você precisa.[]s
Essa regular expression possui algum método que retorne a terceira sequencia de caracteres por exemplo?
Sempre será com esses espaços/tabs separando os campos?
poderia colocar algum caracter tbm, pode usar o split pra trabalhar com delimitadores.
http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)
Sempre será com esses espaços/tabs separando os campos?
poderia colocar algum caracter tbm, pode usar o split pra trabalhar com delimitadores.
http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)
Voce poderia me mostrar como ficaria isso em linhas de codigos?
tentei fazer da seguinte maneira mas nao funcionou:
public static void main(String[] args) {
// TODO code application logic here
String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
System.out.println("usando o split"+string.split("/t"));
}
Sempre será com esses espaços/tabs separando os campos? poderia colocar algum caracter tbm, pode usar o split pra trabalhar com delimitadores. http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)Voce poderia me mostrar como ficaria isso em linhas de codigos?
tentei fazer da seguinte maneira mas nao funcionou:
public static void main(String[] args) { // TODO code application logic here String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]"; System.out.println("usando o split"+string.split("/t")); }
É "\t" ao invés de "/t"
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 [telefone removido]
String registro = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
String endereco = registro.substring (36, 56+1);
Só lembrando que em Java a primeira posição é 0.
Sempre será com esses espaços/tabs separando os campos? poderia colocar algum caracter tbm, pode usar o split pra trabalhar com delimitadores. http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)Voce poderia me mostrar como ficaria isso em linhas de codigos?
tentei fazer da seguinte maneira mas nao funcionou:
public static void main(String[] args) { // TODO code application logic here String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]"; System.out.println("usando o split"+string.split("/t")); }É "\t" ao invés de "/t"
tentei fazer como vc disse, mas descobri que o erro nao esta na barra.
init:
deps-jar:
compile-single:
run-single:
usando o split[Ljava.lang.String;@10b62c9
EXECUTADO COM SUCESSO (tempo total: 0 segundos)
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 [telefone removido]String registro = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]"; String endereco = registro.substring (36, 56+1);Só lembrando que em Java a primeira posição é 0.
veja bem, nem sempre vem certinho na posição correta.
O unico padrao aqui é a ordem em que aparecem os campos.
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 
Mesmo com o toString(); nada acontece.
Talvez isso resolva …
String str = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
Pattern findString = Pattern.compile("RAFAEL ANTONIO");
Matcher m = findString.matcher(str);
while(m.find()){
System.out.println(m.group());
}
Mas como o Tingol disse… se for arquivo posicional, ou seja, se a informação que você quiser esteja sempre na mesma posição o melhor é usar o método substring() da Classe String.
Falowww
Isso necessariamente depende de uma caractere CONSTANTE para fazer a divisão. No caso poderia ser o ESPAÇO, SE o dado não aceitasse também. Então, imagino que o separador é o TAB, e ele sempre está lá, certo?
Raciocine:
Split na string, com o argumento da caracter do TAB. Se não me engano, é a posição 9 da tabela ASCII.
Onde:
o seu texto rua dos prazeres
Ficaria:
variavel[0] = o seu
variavel[1] = texto
variavel[2] = rua dos prazeres
E ai, limparia esta variavel na posição 2:
variavel[2] = variavel[2].trim().replace( ,"");
E por ai.
Abraços
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ícilBoa Sorte :)
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 ??
gp7junior são espaços e não TAB ??
e vc não pode garantir a quantidade de espaços ??
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)
O problema é que os dados tbm aceitam espaços em branco, o risco disso está em se existir um nome assim:
RAFAEL ANTONIO
Bem a vida é feita de riscos :lol:, brincadeira
Ta acabando as opções acho…hehe
Cara troca esses espaços entre campos por um #, ou ;, qualquer coisa, ai fica muito fácil pra resolver isso.
public class Teste {
public static void main(String[] args) {
String str = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]";
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.
é mas como dito antes, se existir 2 ou + espaços no meio do nome já era
Não posso trocar os espaços em branco devido a uma exigencia do outro sistema. O qual não aceita alguns caracteres como o #.
Se fosse só isso.
obrigado mesmo assim
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…
Mesmo com o toString(); nada acontece.init:
deps-jar:
compile-single:
run-single:
usando o split[Ljava.lang.String;@10b62c9
EXECUTADO COM SUCESSO (tempo total: 0 segundos)
O método split() retorna um array de String
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…
Sim mas… como é que se implementa?
gostaria de um exemplo.
vlw
corretamente eles vêm em sequencia.
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 [telefone removido]String registro = "01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]"; String endereco = registro.substring (36, 56+1);Só lembrando que em Java a primeira posição é 0.
É assim oras bolas…hehehe 
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!
terceiroCampo = linhaArquivo.substring(posicaoInicial, posicaoFinal);
onde linhaArquivo é a linha atual (string) e as posições são inteiros fixos, basta você contar aí no seu arquivo, o número de caracteres.
Se você não entendeu por que que eu fiz isto:
0000000000111111111122222222223333333333444444444455555555556666666666
0123456789012345678901234567890123456789012345678901234567890123456789
01254 RAFAEL ANTONIO RUA DOS PRAZERES [telefone removido]
é 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.
Oi,
não a nada que uma analise léxica (teoria) não resolva…
percorra seu texto por caracter, e onde você escontrar espaços mande quebra a linha
ou então gravar em uma variavel do espaço até a posição inicial (assim você tera 1 constante).
continue incrementando e passe para o proximo caracter, se for espaço continue incrementando ou quebrando… até encontrar a proxima letra… dai vai achar outro espaço… guarde a constante (da posicao do caracter atual até seu proximo espaço)…
assim você tera todas as “constantes” gravadas e sabera com uma comparação qual você deseja…
é trabalhoso… bem mais do que uma simples substring… mais nao tem erro…
Tchauzin!
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!
corretamente. Se quiserem ver o resultado executem:
public static void main(String[] args) {
// TODO code application logic here
String string1 = "010001963 91522 91522 JOSE FRANCISCO DO NASCIMENTO F 195263 SSPAL [telefone removido] BELO MONTE 319 57040000JACINTINHO MACEIO AL29061955 3202415 3202147 M 00 9 0703200714032002S";
String string2 = "010005283 91522 91522 ABELARDO RAMOS DOS SANTOS F 418016 SSP/AL [telefone removido] R.PROFªNOEMIA G.RAMALHO-QD: A 30 CASA :09 57033000JACARECICA MACEIO AL15121958 2317545 99914634 M 04 9 0703200708092005S";
for (int i = 0; i<string1.length(); i++){
System.out.println("i1 = "+i+" | "+string1.charAt(i));
}
for (int i = 0; i><string2.length(); i++){
System.out.println("i2 = "+i+" | "+string2.charAt(i));
}
}
fuciona. geralmente o nome aparece na posição 46. e o endereço na posição 174.
vlw e obrigado a todos.>
Lina,
agora me diz… e se tem um um nome composto?
Oi,
poisé… ai complica… posicaoatual+1 =P
ao chegar no caracter espaço, fazer uma verificação se o próximo caracter é uma letra. se sim… ela se torna uma constante…
LINA FERREIRA (CONSTANTE)
só faria isso no primeiro espaço que encontrar…
agora… se tiver 2 espaços e o sobrenome… já é outra coisa =P
Tchauzin!
tá…
admito… tá meia furada a logica
hahahahahaha
só pensar formas pra funcionar x)
Cara,
pelo que vi as opções estão acabando mesmo. Resta vc pedir para enviarem pra vc o txt com algum delimitador padrão ou que alterem o sistema que gera esse txt para que assim o faça rsss.
[]´s
Bem se é pra ter uma resposta definitiva ai vai:
Se vcs observarem as telas em que eu mandei o arquivo, ou as duas linhas do arquivo que mandei na minha ultima mensagem. E executarem o método main da mensagem.
Poderão então perceber que se torna trivial a resolução desse problema.
Uma vez que o campo endereço aparece sempre na´posição 174 do vetor de char que é a nossa linda String.
Dando uma olhada mais minuciosa ainda verao que o proximo campo aparece sempre na posição 214.
Notem também que o campo nome vem na posição 36.
Ou seja:
*Pra pegar o endereço eu vou da posição 174 até a posição 214.
*O resto da implementação fica a critério de cada um. Seja esse por meio de substring ou por meio de ciclos de iterações.
Obrigado a todos que ajudaram
foi como eu disse, o pessoal fez muita festa pruma coisa tao simples, qdo vc colocou o arquivo eu vi de cara q era delimitado por tamanho…
Mas se vc acompanhou a discusão no começo, o gp7junior disse q o arquivo era sequencial e não posicional, por isso demoramos pra ter outras idéias, após ele mostrar o arquivo concluimos que era de outra forma (muitoooo mais simples)