Newsgroup: it.comp.java
Titolo: splittare una stringa separata dal punto

Come da oggetto:
nel metodo split della classe String che cosa ci devo mettere se
volessi splittare una stringa in cui il carattere separatore è il
punto?
con la stringa "pippo.jpg" se faccio split("."); non mi splita un
tubo.
THX

La classe String ha un metodo split()?
Sul jdk 1.3, stando alla documentazione, non esiste tale metodo!!!!
Cmq ecco strade alternative.
Se la tua stringa contiene esclusivamente un solo separatore puoi fare un
metodo che ti restituisce un array di 2 stringhe (appunto le due stringhe
splittate).
public String[] splitta(Stringa s, String separatore)
{
    String splits[] = {"",""};
    // Il primo pezzo lo ottieni, richiedendo la sottostringa che va da 0
    // (quindi l'inizio, fino alla posizione (esclusa) dove trovi il
separatore
    // indexOf restituisce la prima posizione dove è stata trovata la
    // stringa passata in input.
    // Attento!!! in questo esempio io ho omesso i controlli.
    // Se il separatore manca, ti torna -1 da indexOf.
    split[0] = s.substring(0,s.indexOf(separatore));
    // Il secondo pezzo, va dalla posizione + la lunghezza del separatore,
fino
    // a fine stringa.
    split[1] = s.substring(s.indexOf(separatore)+separatore.length());
    return split;
}
Altra possibilità, decisamente più plastica è usare StringTokenizer.
Vedi la documentazione SUN, che riporta anche un esempio.

La classe String ha un metodo split()?
Su jdk 1.4 SI'.
cmq grazie

 writes:
b> con la stringa "pippo.jpg" se faccio split("."); non mi splita un
b> tubo.
String[] b = a.split("\.");
Il punto da solo significa "qualsiasi carattere", il backslash serve a
toglierli questo significato speciale (cfr. java.util.regex.Pattern)
Saluti,
Luca Polo.
-- 
 /Luca Polo : 
Luca...@gest.unipd.it
 || Dipartimento di Tecnica e       \
| System & network administrator      || Gestione dei Sistemi Industriali |
 \
http://www.gest.unipd.it/~jake
      || Universita` di Padova -- Italy  /

tubo.
"." significa... qualsiasi carattere.
C'è scritto sulla documentazione (classi String e Pattern) ;-)
HTH
-- 
Ciao
	Fabrizio C.

toglierli questo significato speciale (cfr. java.util.regex.Pattern)
Sei proprio sicuro? :-)
-- 
Ciao
	Fabrizio C.

> Su jdk 1.4 SI'.
Ops!!! Va be, cmq, le alternative come vedi ci sono.
Ciao.

 THX
Cosě:
String s = "pippo.jpg";
s.split( "\\." );
Ciao ciao
Dani
-- 
Daniele Piras
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If at first the idea is not absurd then there is no hope for it. 
- Albert Einstein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> String[] b = a.split("\.");
FC> Hai provato almeno a compilare questa linea di codice?
Ehm... *doppio* backslash, sorry. Colpa del Perl e della fretta... 
FC> Sei proprio sicuro? :-)
Certo:  il doppio  backslash come  escape/quoting *non*  fa  parte delle
specifiche delle regexp in se', ma e` necessario per far felice Java che
se ne "mangia" uno (nelle costanti letterali).



Se non usi JDK 1.4, puoi utilizzare la classe StringTokenizer:
StringTokenizer st = new StringTokenizer(str,".");
String[] tokens = new String[st.countTokens()];
int i = 0;
while (st.hasMoreTokens())
{
	tokens[i++] = st.nextToken();
}
Spero di non aver scritto troppe vaccate. :)
HTH
-- 
||//endaar / non e' bello cio' che e' bello
||\\______/  e' bello cio' che e' kender
CdHer #1, FIDDer #27, Membro del Consiglio dei Due della LILV

anch'io leggendo la documentazione avevo capito che il . solo aveva un
significato jolly e avevo provato con il "\" anteposto ma mi dava errore di
compilazione e a quel punto avevo gettato la spugna chiedendo il Vs
aiuto....
aiuto che č puntu-almente arrivato..con "\\" tutto funza thx!

Ehm... *doppio* backslash, sorry. Colpa del Perl e della fretta... 
Ok :-D
-- 
Ciao
	Fabrizio C.