Oppure

Loading
03/03/16 14:05
domenico_rizzo
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 03/03/16 14:40
aaa
03/03/16 14:40
pierotofy
Mm, split è la funzione giusta da usare. In che senso non ti ritorna i valori non presenti?

Mostrarci il codice.
Il mio blog: piero.dev
03/03/16 14:44
domenico_rizzo
Ecco qui
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:
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 03/03/16 14:46
aaa
03/03/16 15:03
pierotofy
Eh, infatti split funziona proprio in questa maniera:

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String row = "campo1-campo2--campo4----campo8";
		String[] splits = row.split("-");
		System.out.println(splits.length);
		for (String s : splits){ 
			System.out.println(s); 
		}
	}
}


Output:

8
campo1
campo2

campo4



campo8
Il mio blog: piero.dev
03/03/16 15:16
domenico_rizzo
@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:
for (String ss : splits){
                    System.out.println("["+ss+"]");
            }

Non capisco perchè :noway: Non dovrebbe stamparmi [] per gli elementi vuoti??

P.S. la lunghezza di splits risulta essere 3 .-:_doubt:
Ultima modifica effettuata da domenico_rizzo 03/03/16 15:54
aaa
03/03/16 16:36
pierotofy
Potresti postare il codice completo?
Il mio blog: piero.dev
03/03/16 17:00
domenico_rizzo
Eccoti qua (spero non sia troppo confusionario, ho messo commenti per aiutare):

public static void getDataByFile(String file_path) {//legge un file dove il suo path è passato come parametro
        try {
            BufferedReader in = new BufferedReader( new FileReader(file_path) );
            DesEncrypter encrypter = new DesEncrypter( MWLogin.rna.getText().trim() );
            String s = "";
            while ((s = in.readLine()) != null) {
                String decrypted = encrypter.decrypt(s);
                fillArraylistWithStringFile( file_path, decrypted );
            }
            in.close();
        } catch (Exception e) {}
    }
    
    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);
            for (String ss : splits){
                    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] 
                                               )
                               );
        }
    }
aaa
03/03/16 17:43
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?
Il mio blog: piero.dev