Leggere un JtextArea to ArrayList string

di il
4 risposte

Leggere un JtextArea to ArrayList string

Buongiorno,
come da oggetto, ho la necessità di leggere un JtextArea inserendo le varie "righe di testo", in un ArrayList di stringhe.
Ad esempio, se il JTextArea è:
prima riga
seconda riga
terza riga
etc

L'ArrayList, dovrà contenere per ogni indice la sua riga associata in maniera incrementale:
ArrayList stringa[0] --> toStriing() "prima riga"
ArrayList stringa[1] --> toStriing() "seconda riga"
ArrayList stringa[2] --> toStriing() "terza riga"

Sapreste aiutarmi con del codice associato?

Grazie,
ciao

4 Risposte

  • Re: Leggere un JtextArea to ArrayList string

    teatrodelsogno ha scritto:


    come da oggetto, ho la necessità di leggere un JtextArea inserendo le varie "righe di testo", in un ArrayList di stringhe.
    JTextArea ti fornisce il testo completo (con tanto di newline di terminazione righe) tramite getText(). Quindi:
    - la stringa completa la usi per creare un java.io.StringReader
    - il StringReader lo incapsuli in un java.io.BufferedReader
    - leggi "a righe" (in loop) tramite readLine() di BufferedReader finché ci sono righe
    - ogni stringa (riga) letta la aggiungi in un ArrayList<String>

    Non è l'unico modo ma perlomeno è lineare e ti permette di non preoccuparti dei newline presenti ovviamente nel testo.
    A te lo svolgimento in codice.

    P.S. ah, e una logica "dato un String leggi le righe e mettile in un ArrayList" è un concetto abbastanza generico, che puoi esternalizzare in un metodo di utilità facilmente riutilizzabile nella tua applicazione.

    P.S.2: puoi leggere "a righe" anche con java.util.Scanner, se lo preferisci/conosci, e non serve più StringReader.
  • Re: Leggere un JtextArea to ArrayList string

    Grazie mille per le dritte.

    Provo ad implementarlo e ti faccio sapere.

    Grazie,
    ciao
  • Re: Leggere un JtextArea to ArrayList string

    Rieccomi...
    scusami, ma sono un po' arrugginito in Java... (l'ultimo approccio è stato 10 anni fa! ;-( ) e questo programma mi serve in ambito Networking).

    Ti chiedo quindi un aiuto di coding.

    Per ora sono riuscito a fare questo, ma non funziona un bel niente :
            String str = areatext.readTextarea();
            
            InputStream is = new ByteArrayInputStream(str.getBytes());
     
    	// read it with BufferedReader
    	BufferedReader br = new BufferedReader(new InputStreamReader(is));
     
    	String line;
    	while ((line = br.readLine()) != null) {
    		System.out.println(line);
    	}
     
    	return br;
    Grazie in anticipo,

    Matteo
  • Re: Leggere un JtextArea to ArrayList string

    teatrodelsogno ha scritto:


            InputStream is = new ByteArrayInputStream(str.getBytes());
     
    	// read it with BufferedReader
    	BufferedReader br = new BufferedReader(new InputStreamReader(is));
     
    	String line;
    	while ((line = br.readLine()) != null) {
    		System.out.println(line);
    	}
     
    	return br;
    La parte che ho quotato, tecnicamente funziona. Nel senso che se 'str' contiene un testo con newline (qualunque sia tra CR o LF o CR+LF) in mezzo, ottieni i print delle linee.

    Ma non c'è assolutamente motivo di tirare in ballo array di byte, InputStream e altro!!


    Parti dal fare un metodo tipo (il nome come lo vuoi tu):

    public static List<String> estraiLineeTesto(String testo) { ......... }

    Dentro usa o StringReader+BufferedReader oppure solo Scanner. A tua scelta.
Devi accedere o registrarti per scrivere nel forum
4 risposte