|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2004
Messaggi: 60
|
JAVA STRINGHE
qlc sa spiegarmi come faccio a contare i caratteri che compongono una stringa??
![]() siccome se la mia stringa ha 16 caratteri significa che e il codice che mi serve....
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!! ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Mar 2002
Città: Milano
Messaggi: 141
|
Per contare i caratteri di una stringa puoi usare il metodo length().
Byez Hawke
__________________
<SetiEmperor> |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
La classe String è fondamentale. Devi conoscere bene i suoi metodi. Ma la usi la doc delle API?? http://java.sun.com/j2se/1.4.2/docs/...ng/String.html
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
nomestringa.length()
se per esempio devi scandire la stringa ti fai: for (int i = 0;i<nomestringa.length();i++) { } se usi javadoc vedrai che questi dubbi te li togli in 2 minuti. si possono consultare su internet o scaricarli (sono una 30ina di mb) ciao |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: May 2004
Messaggi: 60
|
grazie per la risp...scritta cosi la mia domanda sembrava un po scema pero il fatto e che nn so come distinguere due stringhe...e un po un casino....
![]()
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!! ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
le potresti scandire un carattere alla volta e quando uno è diverso sai che sono diverse oppure potresti usare il compareTo ma nn mi ricrdo la sintassi..........
se ci spieghi un pò meglio cosa devi fare magari si risolve in un attimo.... |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
Se sei l'Hawke che conosco da anni... *Benvenuto* [/OT] per sapere se due stringhe s1 e s2 sono diverse basta constrollare che non siano uguali col metodo equals()
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
Quote:
nn ci avevo pensato! |
|
![]() |
![]() |
![]() |
#9 | |
Member
Iscritto dal: Mar 2002
Città: Milano
Messaggi: 141
|
Quote:
![]()
__________________
<SetiEmperor> |
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: May 2004
Messaggi: 60
|
hihi beh...
HO una stringa che invio tramite socket che e composta da 16 caratteri e sarebbe il codice letto da un ibutton...e in piu invio al socket dei comandi tipo ("apri" , "stato" ecc) ora come potrei fare secondo voi a far capire al server quale e un codice ibutton e quale e un comando?? avevo pensato alla lunghezza ma forse un giorno ci sara un comando lungo 16 caratteri...oppure a mettere un carattere di riconoscimento davanti alla stringa tipo i x ibutton e c x comando ma e poco furbo per quanto riguarda la sicurezza...boh voi come fareste??
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!! ![]() |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Quote:
String mystringa="ciao"; char c = mystringa[i]. Se si ha bisogno di un'accesso di questo tipo si adopera il metodo toCharArray() sulla stringa,l oppure si usa il metodo substring(...) appropriato. Per quel che riguarda il confronto tra stringhe, si deve prestare attenzione a non incorrere nell'errore banale di testare Codice:
String s1 = "ciao" String s2 = "ciao" if (s1 == s2) restituisce false Anna spiegaci il problema che ti aiutiamo ![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Cioè hai una stringa e devi intercettare il comando che rappresenta??
allora un approccio corretto è questo: Definisci delle COSTANTI per i comandi (se un giorno dovessero cambiare cambi solo quelle e non in tutte le parti del codice). Codice:
final static String APRI="apri" if (tuaStringaCheContieneIlCOmando.indexOf(APRI) != -1) gestisciApertura(); Quote:
|
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: May 2004
Messaggi: 60
|
no uffi non riesco a spiegarmi....
![]() allora il mio server riceve queste due stringe per esempio: "0B00000034D4D602" e "Apri" ora la prima e il codice di un ibutton la seconda e un comando... per ora io avevo creato due if: if(str.equals("0B00000034D4D602")){ String IDUtente = "0B00000034D4D602"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); if(str.equals("Apri")){ System.out.println("Ho ricevuto la richiesta di apertura della porta"); ApriPorta(); } solo che strutturato cosi non va bene siccome il giorno in cui avro 200 utenti dovro mettere 200 if fatti cosi: if(str.equals("0B00000034D4D602")){ String IDUtente = "0B00000034D4D602"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); if(str.equals("0E0000008F33A802")){ String IDUtente = "0E0000008F33A802"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); } ....ecc quindi come faccio a far capire al server in modo semplice veloce e sicuro che la stringa fatta cosi:"0E0000008F33A802"(per esempio) e un codice e nn un comando???
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!! ![]() |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Bhè qui devi decidere delle specifiche restrittive tu:
Ad esempio potresti nel caso più semplice affermare ch un comando è formato da soli caratteri alfabetici e invece in ID da caratteri alfanumerici. In questo modo basterebbe testare, attraverso i metodi della classe Character, se esiste un digit (cifra): Codice:
char charArray[] = quelloCheArriva.toCharArray(); for (int i=0; i<charArray.length;i++) { Character c = new Character(charArray[i]); if (c.isDigit()) return true; } return false; |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
cmq dovresti cercare di formalizzare meglio il problema per schiarirti lle idee. Se quello che hai in mente è un vero e proprio "linguaggio" allora non puoi fare altro che studiartene la grammatica e sperare che sia riconoscibile da un parser. Altrimenti puoi usare l'approccio delle costanti cercando di mantenere ben separati anche a livello logico i comandi riconosciuti dal resto, magari utilizzando la semantica delle espressioni regolari (vedi String.matches(String regex)).
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: May 2004
Messaggi: 60
|
purtroppo per me il mio livello di conoscienze di java e mooooolto basso e al mio prof nn vanno mai bene le mie idee per quello cercavo un vostro consiglio x distinguere le due stringhe....
![]()
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!! ![]() |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Queste decisioni devi prenderle tu. Una soluzione intelligente sarebbe, come hai giustamente intuito, di mettere un prefisso (mi raccomando, definito come COSTANTE. Però non sempre è una soluzione fattibile, perchè ad esempio la stringa deve avere una lunghezza massima già interamente occupata.
Soluzione ancora più intelligente, e se il tuo prof rompe mandalo qui da noi ![]() class Comando extends String class Codice extends String entrambe sono a tutti gli effetti delle Stringhe (e come tali puoi trattarle), ma al momento del test potrai chiederti: stringaCheArriva instanceof (Comando) ??? Ovvero potrai testare il tipo di istanza ![]() |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
try { Integer.parseInt(str, 16); /* se arrivo qui vuol dire che str rappresenta un numero esadecimale quindi lo tratto come un codice valido */ String IDPorta = "5B0000018A1B5409"; verificaAccessi(str, IDPorta); ... } catch (NumberFormatException ex) { /* non è un codice, probabilmente è un comando quindi provo a vedere se str.equals(COSTANTE_COMANDO) */ ... }
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
nn so se è una cazzata ma nn puoi identificare il tipo di stringa a priori?
tipo con due nomi di variabili diversi? forse nn ho colto il problema... |
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:02.