Como pegar um dado contido no terceiro campo de uma String? [Resolvido]

String string = "01254      RAFAEL ANTONIO           RUA DOS PRAZERES     245896 6587";

Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?

pela informação fornecida até agora:

substring(int, int);

:smiley:

Examples:

 "hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"

http://java.sun.com/j2se/1.5.0/docs/api/

Arquivo posicional ??
Essa informação sempre estará começando no msm lugar e terminando no msm lugar :?:

[quote=erickcellani]pela informação fornecida até agora:

substring(int, int);

:smiley:

Examples:

 "hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"

http://java.sun.com/j2se/1.5.0/docs/api/[/quote]

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?

[quote=gp7junior]String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587";

Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?[/quote]

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!

[quote=neohacker]Arquivo posicional ??
Essa informação sempre estará começando no msm lugar e terminando no msm lugar :?:

8)[/quote]

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

[quote=erickcellani][quote=gp7junior]String string = "01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587";

Qual método usar pra se pegar o conteudo “RUA DOS PRAZERES”. ?[/quote]

q String mais esquisita cara… ela vai ser assim mesmo???[/quote]

Sim pois ela vem de um arquivo externo no formato .txt gerado a partir de um outro sistema.

[quote=marciocamurati]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[/quote]

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)

[quote=Luiz Aguiar]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)[/quote]

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     245896 6587";
        System.out.println("usando o split"+string.split("/t"));
        
    }

[quote=gp7junior][quote=Luiz Aguiar]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)[/quote]

Voce poderia me mostrar como ficaria isso em linhas de codigos?

tentei fazer da seguinte maneira mas nao funcionou:

[code]

public static void main(String[] args) {
// TODO code application logic here

    String string = "01254      RAFAEL ANTONIO           RUA DOS PRAZERES     245896 6587";
    System.out.println("usando o split"+string.split("/t"));
    
}

[/code][/quote]

É “\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     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=Yky Mattshawn][quote=gp7junior][quote=Luiz Aguiar]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)[/quote]

Voce poderia me mostrar como ficaria isso em linhas de codigos?

tentei fazer da seguinte maneira mas nao funcionou:

[code]

public static void main(String[] args) {
// TODO code application logic here

    String string = "01254      RAFAEL ANTONIO           RUA DOS PRAZERES     245896 6587";
    System.out.println("usando o split"+string.split("/t"));
    
}

[/code][/quote]

É “\t” ao invés de “/t”[/quote]

tentei fazer como vc disse, mas descobri que o erro nao esta na barra.

[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]

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 :slight_smile:

Mesmo com o toString(); nada acontece.

Talvez isso resolva …

String str = "01254 RAFAEL ANTONIO RUA DOS PRAZERES 245896 6587"; 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