|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
[Java] Ricerca all'interno di stringhe
Salve a tutti vorrei chiedervi se esiste un modo molto semplice per provare a trovare all'interno di una stringa alcune sottostringhe ad esempio, come faccio a verificare se in una stringa X sono contenute tutte le sottostringhe:
A="Pippo" B="Orazio" C="Clarabella" considerando che prima di A, tra A e B, tra B e C e dopo C ci possa essere qualunque cosa? Per esempio: 1)X="giuhihoijoPippo:bhiubuiubi:;huh?OrazioiniuClarabellauiun", questa mi deve venire riconosciuta 2)X="Pippo:bhiubuiubi:;huh?OrazioiniuClarabellauhhihi", questa riconosciuta 3)X="PippoOrazioClarabella", questa riconosciuta 4)X="giuhihoijoPippo:bhiubuiubi:;huh?Orazioiniuhuhuiiu", questa non riconosciuta Grazie a tutti, ciao ciao. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1159
|
Ma è un esercizio scolastico o per qualcosa che stai provando a fare tu?Un indexOf ti risolverebbe il problema se ho capito bene, in pratica se ti restituisce -1 la stringa non c'è, altrimenti c'è e passi alla prossima parola da cercare
|
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Oct 2007
Messaggi: 55
|
Quote:
Ti consiglio di salvarti tra i preferiti il link alla documentazione (API) per esempio questo per jdk 1.6... In particolare a te interessa questo (il metodo "contains" dell'oggetto String). Quindi per risponderti dovresti fare (o almeno io farei) Codice:
if (X.contains("Pippo") && X.contains("Orazio") && X.contains("Clarabella")).. ..(cose da fare in caso tutte e tre le parole debbano essere presenti...) |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Probabilmente il metodo migliore è usare una espressione regolare. Questa per esempio da risultati corretti per tutte e quattro le stringhe.
Codice:
^.*Pippo.+Orazio.+Clarabella.*$ ![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
@EDIT: Grazie della precisazione a tutti e due (TigerShark & Vicius) e del link Scusate l'OT ![]() Ultima modifica di banryu79 : 10-12-2007 alle 09:20. |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
un'espressione regolare ![]() http://java.sun.com/docs/books/tutor...sential/regex/
__________________
![]() |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao a tutti, grazie mille per le risposte avevo pensato pure io alle espressioni regolari, in particolare:
^.* cosa indica? .*$ e questo? Il punto indica un punto o sta ad indicare altro? Grazie mille, ciao ciao. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
I simboli ^ e $ sono usati per indicare l'inizio e la fine della stringa. In questo caso il punto rappresenta ogni possibile carattere mentre * e + specificano la cardinalità dell'insieme. Entrambi permettono un numero infinito di lettere ma l'asterisco ammette anche l'insieme vuoto, quindi una stringa nulla, mentre con il più si escludono le stringhe vuote.
ciao ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao quindi una stringa in questo modo:
^.*Pippo.*Orazio.*Clarabella.*$ indica che prima di pippo ci può essere qualunque cosa (da nulla a miliardi di caratteri) tra pippo ed orazio, tra orazio e clarabella e dopo clarabella stessa cosa? Grazie mille, ciao ciao. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:16.