 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
ciccioR Guest
|
Posted: Wed Jun 23, 2004 2:42 pm Post subject: "stringa da splittare" |
|
|
il mio problema è questo:
Ho un stringa particolare, una "whereCondition" composta da atomi di
confronto ad esempio (cod1=cod2),cod3>cod4 e valori semplici ad esempio
cod :
la stringa composta quindi potrebbe essere questa:
cod1=cod2 AND cod3>cod4 OR id
ho la necessità di ottenere queste subStringhe:
-cod1=cod2;
-AND cod3>cod4;
-OR id;
Il metodo split di String non credo sia utile xke ancke impostando una
regex con AND e OR queste ultime non comparirebbero poi nelle
sottostringhe.
Ho pensato alla classe StreamTokenizer ma nn so come funziona!
Aspetto suggerimenti ed esmpi con codice
Grazie a tutti coloro mi risponderanno
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]
|
|
| Back to top |
|
 |
Netrunner Guest
|
Posted: Wed Jun 23, 2004 2:53 pm Post subject: Re: "stringa da splittare" |
|
|
Blood wrote:
| Quote: | "ciccioR" <sdadasd (AT) asdasd (DOT) it> ha scritto nel messaggio
news:cbc4sk$n9e$1 (AT) news (DOT) newsland.it...
il mio problema è questo:
Ho un stringa particolare, una "whereCondition" composta da atomi di
confronto ad esempio (cod1=cod2),cod3>cod4 e valori semplici ad esempio
cod :
la stringa composta quindi potrebbe essere questa:
cod1=cod2 AND cod3>cod4 OR id
ho la necessità di ottenere queste subStringhe:
-cod1=cod2;
-AND cod3>cod4;
-OR id;
Il metodo split di String non credo sia utile xke ancke impostando una
regex con AND e OR queste ultime non comparirebbero poi nelle
sottostringhe.
Ho pensato alla classe StreamTokenizer ma nn so come funziona!
Aspetto suggerimenti ed esmpi con codice
No credo che abbia bisogno di un tokenizer. |
Guarda la classe tokenizer forse fa al caso tuo. Prende un carattere e
spezza la stringa secondo quel carattere.
Spero di esserti stato utile, ciao!
| Quote: | Grazie a tutti coloro mi risponderanno
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]
Prova con StringBuffer.
Prima crei il tuo buffer così:
StringBuffer buffer = new StringBuffer();
poi aggiungi la stringa al buffer con buffer.append(TuaStringa);
poi crei una sottostringa con String nuovaStringa = buffer.substring(int
inizio, int fine);
e così via per tutte le parti della tua stringa...
E' solo un'idea......
Fammi sapere.
Blood
|
|
|
| Back to top |
|
 |
Blood Guest
|
Posted: Wed Jun 23, 2004 2:56 pm Post subject: Re: "stringa da splittare" |
|
|
"ciccioR" <sdadasd (AT) asdasd (DOT) it> ha scritto nel messaggio
news:cbc4sk$n9e$1 (AT) news (DOT) newsland.it...
| Quote: | il mio problema è questo:
Ho un stringa particolare, una "whereCondition" composta da atomi di
confronto ad esempio (cod1=cod2),cod3>cod4 e valori semplici ad esempio
cod :
la stringa composta quindi potrebbe essere questa:
cod1=cod2 AND cod3>cod4 OR id
ho la necessità di ottenere queste subStringhe:
-cod1=cod2;
-AND cod3>cod4;
-OR id;
Il metodo split di String non credo sia utile xke ancke impostando una
regex con AND e OR queste ultime non comparirebbero poi nelle
sottostringhe.
Ho pensato alla classe StreamTokenizer ma nn so come funziona!
Aspetto suggerimenti ed esmpi con codice
Grazie a tutti coloro mi risponderanno
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]
Prova con StringBuffer. |
Prima crei il tuo buffer così:
StringBuffer buffer = new StringBuffer();
poi aggiungi la stringa al buffer con buffer.append(TuaStringa);
poi crei una sottostringa con String nuovaStringa = buffer.substring(int
inizio, int fine);
e così via per tutte le parti della tua stringa...
E' solo un'idea......
Fammi sapere.
Blood
|
|
| Back to top |
|
 |
ciccioR Guest
|
Posted: Wed Jun 23, 2004 3:55 pm Post subject: Re: "stringa da splittare" |
|
|
Blood ha scritto:
| Quote: | Prova con StringBuffer.
Prima crei il tuo buffer così:
StringBuffer buffer = new StringBuffer();
poi aggiungi la stringa al buffer con buffer.append(TuaStringa);
poi crei una sottostringa con String nuovaStringa = buffer.substring(int
inizio, int fine);
e così via per tutte le parti della tua stringa...
E' solo un'idea......
Fammi sapere.
Blood
|
Non conosco a priori la stringa quindi nemmeno inizio e fine , la stringa
la acquisisco a run-time leggendola , deve essere un'operazione
applicabile su ogni string di questo tipo.
grazie
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]
|
|
| Back to top |
|
 |
Alex Guest
|
Posted: Wed Jun 23, 2004 7:52 pm Post subject: Re: "stringa da splittare" |
|
|
[email]sdadasd (AT) asdasd (DOT) it[/email] (ciccioR) wrote in message news:<cbc4sk$n9e$1 (AT) news (DOT) newsland.it>...
| Quote: | il mio problema è questo:
Ho un stringa particolare, una "whereCondition" composta da atomi di
confronto ad esempio (cod1=cod2),cod3>cod4 e valori semplici ad esempio
cod :
la stringa composta quindi potrebbe essere questa:
cod1=cod2 AND cod3>cod4 OR id
ho la necessità di ottenere queste subStringhe:
-cod1=cod2;
-AND cod3>cod4;
-OR id;
Il metodo split di String non credo sia utile xke ancke impostando una
regex con AND e OR queste ultime non comparirebbero poi nelle
sottostringhe.
Ho pensato alla classe StreamTokenizer ma nn so come funziona!
Aspetto suggerimenti ed esmpi con codice
Grazie a tutti coloro mi risponderanno
|
Io farei una replace sugli operatori logici prefissandoli con un
carattere speciale (che ne so n) e poi chiamerei lo split sulla
stessa stringa! :)
|
|
| Back to top |
|
 |
Giorgio Gallo Guest
|
Posted: Wed Jun 23, 2004 9:43 pm Post subject: Re: "stringa da splittare" |
|
|
ciccioR wrote:
| Quote: | Non conosco a priori la stringa quindi nemmeno inizio e fine , la stringa
la acquisisco a run-time leggendola , deve essere un'operazione
applicabile su ogni string di questo tipo.
|
Se devi solo splittare la stringa prima di "AND" e "OR" puoi usare due
split() successivi, uno sugli AND e uno sugli OR (con gli eventuali
spazi,tab,...), e poi riaggiungere "AND " e "OR " all'inizio dei vari pezzi:
1. "aaa ANDtn bbbtOR ccc"
2. {"aaa", "bbbtOR ccc"}
3. {"aaa", "AND " + "bbbtOR ccc"}
4. {{"aaa"}, {"AND bbb", "ccc"}}
5. {{"aaa"}, {"AND bbb", "OR " + "ccc"}}
Devi però fare in modo che
"AND aaa AND bbb"
diventi dopo il primo passaggio
{"", "aaa", "bbb"}
altrimenti ti perdi un AND (stesso discorso per gli OR, per il caso in
cui avessi AND e/o OR a fine stringa e per eventuali "OR OR" nella stringa)
Se hai esigenze più "avanzate" della semplice elaborazione di stringhe,
considera la possibilità di farti un parser "serio" e di convertire la
tua stringa in una struttura un po' più significativa di una collezione
di sottostringhe (che io sappia di solito si usano degli alberi) - dai
un'occhiata a JavaCC (java compiler compiler): è un affarino che a
partire da una grammatica ("farcita" di codice) ti genera un parser.
Potresti facilmente (ad esepio):
- parsare e interpretare correttamente cose come "aaa AND (bbb OR ccc)"
- segnalare situazioni in cui non è stata rispettata la grammatica
(immagino che non abbia senso per te una stringa che inizi per AND, o
che contenga "AND OR OR")
- estendere il tuo mini-linguaggio (eventualmente in futuro) ad es. con
NOT, LIKE, CONTAINS, ...
Non farti spaventare dall'impatto con un tool molto potente che ti
permette di generare parser per grammatiche molto complesse (tipo per
linguaggi come Java): scaricatelo e smanettaci per un paio d'ore prima
di buttarlo via perchè non si capisce niente
Saluti,
Giorgio
|
|
| Back to top |
|
 |
Sandro.. Guest
|
Posted: Thu Jun 24, 2004 10:09 am Post subject: Re: "stringa da splittare" |
|
|
| Quote: | poi crei una sottostringa con String nuovaStringa = buffer.substring(int
inizio, int fine);
e così via per tutte le parti della tua stringa...
|
ti ricordo che substring è lineare, quindi messo in un ciclo esplode in
complessità
ciao
Sandro
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|