Split

ola mais uma vez.

é possivel utilizar o split sem retirar o criterio do split ?

por exemplo:

aux = o rato roeu a rolha

String [] s = aux.split("\s")

assim vou obter :

s[0]=o
s[1]= rato

e o que pretendia era que o primeiro tivesse o+" " rato+" "

isto é possivel?

obrigado!

Mas qual a utilidade disso? Você quer fazer um array de Strings? Acho que é melhor usar um array de Strings normal…

:roll: 8O

Não entendi a pergunta

O que ele quer fazer, se eu não estou enganado, é poder “desmontar” a string e remontar de novo, sem ter de guardar a string original. Por isso é que ele quer os tais espaços.

Se você precisa disso mesmo, em vez de usar “split”, pode usar as expressões regulares e um loop. É meio chato porque tem de usar aqueles objetos Pattern e Matcher, e um ArrayList para ir guardando as substrings que foram obtidas, mas é um bom exercício.

E ae kra,blz? :cool:

Vc pode usa o StringTokenizer

ai ficaria:


int x = 0;
String aux = "O rato roeu a rolha";
String[] coletor;

StringTokenizer tokens = new StringTokenizer ( aux );

for ( int z = 0; z <= tokens.countTokens(); z++ )
      coletor [ z ] = tokens.nextToken();

Não testei mas creiu q seja isso, quando voltar do almoço dou mais uma olhada pra ver se tem erro.

Espero ter ajudado
:grin:

boa tarde!!!
aproveitando o exemplo do stringtokenizer, alguem poderia me explicar para que ele serve e como funciona
tentei direto no site da sun, masssss, o meu ingles é um problema hehe :lol: :lol: nao consegui formar uma ideia solida sobre o mesmo

como de costuma
desde ja deixo o meu obrigadooooooo :grin:

[quote=“C3pO”]boa tarde!!!
aproveitando o exe,plo do strintokenizer, alguem poderia me explicar para que ele serve e como funciona
tentei direto no site da sun, masssss, o meu ingles é um problema hehe :lol: :lol:

como de costuma
desde ja deixo o meu obrigadooooooo :grin:[/quote]

O Tokenizer serve pra facilitar a manipulação das String.

Exatamente como demonstrado no meu exemplo,hehe.

O StringTokenizer tem 3 construtores, são eles:

StringTokenizer ( String )
:arrow: Fará com q a String usada como parâmetro seja dividida em pedações menores, o critério de separação considera como “break” os comandos - “\n” ( new line ) ; “\t” ( tab ) “\r” ( carriege return ) e o " " ( espaço em branco ).

StringTokenizer ( String, String )
:arrow: Nesse o primeiro parâmetro mantêm sua funcionalidade de ditar o que será “tokenizado” enquanto a segunda String servirá como pârametro para saber ONDE “quebrar” a string.

Ou seja, o q vc colocar na segunda string, o compilador interpretará como uma “\n”, fazendo com que a palavra seja quebrada até QUALQUER caracter q faça parte da segunda String.

Ex: ( “abcdefgh”, “cf” )
Quebraria em :
:arrow: ab
:arrow: cde
:arrow: fgh

pq quebraria a linha em c e depois novamente em f.
( soh naum lembro se o c e o f ficam na linha de cima ou de baixo, nada q um teste naum resolva )

Jah o terceiro construtor de tokenizer funciona assim:
( String, String, boolean )
Os dois primeiros parâmetros se mantêm e o boolean vai determinar se vc quer que o delimitador ( caracteres da segunda String ) retornarão como tokens ou não.

:grin:

Não sei se fui mto objetivo, qualquer coisa me avise q eu tento explicar melhor.

[]'s

ahhhhh
agora comeco a compreender hehehe
mas pra q servem os metodos nextToken() e countTokens

desculpem o incomodo, mas pretendo sanar minhas duvidas sempre que possivel

obrigadoooooo :grin: :cool: :wink:

[quote=“C3pO”]ahhhhh
agora comeco a compreender hehehe
mas pra q servem os metodos nextToken() e countTokens

desculpem o incomodo, mas pretendo sanar minhas duvidas sempre que possivel

obrigadoooooo :grin: :cool: :wink:[/quote]

Kra, ajudar os outros n eh incômodo naum!!

o nextToken() manda ele exibir o próximo ( next ) token , partindo do princípio q nenhum foi exibido ateh o momento, ele exibiria o primeiro.

o countTokens seria pra contar ( count ) em qntos tokens foram divididos a string q vc passou como parâmetro pro StringTokenizer

Bom, para quem quer usar Pattern e Matcher.

Vamos pegar o seu exemplo do rato, e vamos ver a saída.

import java.util.regex.*;

class RatoRoeu {
    public static void main(String[] args) {
        String ratoRoeu = " O  rato roeu   a roupa   do Rei  de Roma.";
        Pattern pat = Pattern.compile ("\S+\s*");  // um ou mais não-espaços, seguidos por zero ou mais espaços
        Matcher mat = pat.matcher (ratoRoeu);
        int pos = 0;
        while (mat.find()) {
            String palavraComBrancos = ratoRoeu.substring (mat.start(), mat.end());
            System.out.println ("[" + palavraComBrancos + "]");
        }
    }
}        
        

Saída:

C> \j2sdk1.4.2_08\bin\java -cp . RatoRoeu
[O  ]
[rato ]
[roeu   ]
[a ]
[roupa   ]
[do ]
[Rei  ]
[de ]
[Roma.]

O programa acima requer Java 1.4 ou 5.0.

caraca era mesmo isso que eu queria!! muito obrigado!