domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Ciao io avrei una stringa formata in questo tipo: campo1-campo2--campo4----campo8
Vorrei creare una sorta di funzione che mi restituisca i vari campi tra i "trattini", comprese le stringhe vuote dei campi non presenti.
P.S. Ho usato la funzione SPLIT ma mi restituisce un array dei soli valori esistenti quindi senza i valori non presenti
Ultima modifica effettuata da domenico_rizzo il 03/03/2016 alle 15:40 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Mm, split è la funzione giusta da usare. In che senso non ti ritorna i valori non presenti?
Mostrarci il codice.
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Ecco qui
Codice sorgente - presumibilmente Java |
String row = "campo1-campo2--campo4----campo8"; String[] splits = row. split("-");
|
L'array contiene i 4 campi "non nulli" quando io in realtà vorrei un array dove in ogni sua posizione sia presente il proprio campo anche se nullo, in questo modo:
Codice sorgente - presumibilmente Plain Text |
splits[0] = "campo1";
splits[1] = "campo2";
splits[2] = "";
splits[3] = "campo4";
splits[4] = "";
splits[5] = "";
splits[6] = "";
splits[7] = "campo8";
|
Ultima modifica effettuata da domenico_rizzo il 03/03/2016 alle 15:46 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Eh, infatti split funziona proprio in questa maniera:
Codice sorgente - presumibilmente Java |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { { String row = "campo1-campo2--campo4----campo8"; String[] splits = row. split("-"); System. out. println(splits. length); } } }
|
Output:
8
campo1
campo2
campo4
campo8
|
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
@pierotofy A me non sembra funzionare al tuo stesso modo <.<
Provando con questa stringa: 1#2#3########
Mi stampa questo:
[1]
[2]
[3]
ed il codice per stampare è questo:
Codice sorgente - presumibilmente Java |
System. out. println("["+ss +"]"); }
|
Non capisco perchè Non dovrebbe stamparmi [] per gli elementi vuoti??
P.S. la lunghezza di splits risulta essere 3 .-
Ultima modifica effettuata da domenico_rizzo il 03/03/2016 alle 16:54 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Potresti postare il codice completo?
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Eccoti qua (spero non sia troppo confusionario, ho messo commenti per aiutare):
Codice sorgente - presumibilmente Java |
public static void getDataByFile (String file_path ) {//legge un file dove il suo path è passato come parametro try { DesEncrypter encrypter = new DesEncrypter( MWLogin.rna.getText().trim() ); while ((s = in.readLine()) != null) { String decrypted = encrypter. decrypt(s ); fillArraylistWithStringFile( file_path, decrypted ); } in.close(); } private static void fillArraylistWithStringFile (String file_path, String s ){//riempie l'array corrispondente al path del file String[] splits = s. split(ARCHIVE_SEPARATOR );//archive_separator è il carattere separatore if( file_path.equals(ALLEVATORI_FILE) ){ System. out. println(s +" -> "+splits. length); System. out. println("["+ss +"]"); } Main.allevatori.add( new Allevatore( splits[0], splits[1], splits[2], splits[3], splits[4], splits[5], splits[6], splits[7], splits[8], splits[9], splits[10] ) ); } }
|
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Per codice completo, si intende il codice minimo necessario per poter eseguire il programma e poter debuggare il programma... con due funzioni, senza files di input, come si puo' aiutare? Vabbe'...
Potresti fare un System.out.println di decrypted?
|
|
domenico_rizzo (Normal User)
Pro
Messaggi: 90
Iscritto: 27/07/2015
|
Postato originariamente da pierotofy:
Per codice completo, si intende il codice minimo necessario per poter eseguire il programma e poter debuggare il programma... con due funzioni, senza files di input, come si puo' aiutare? Vabbe'...
Potresti fare un System.out.println di decrypted? |
Dopo svariate prove ho risolto, bastava usare l'altro metodo String[] splits = row.split("-", 11); dove 11 è il numero di elementi che deve avere l'array, in questo modo mi conta anche le stringhe vuote date "dal valore vuoto". Grazie ancora per la disponibilità |
|