Rimuovere punteggiatura da un testo.

di il
2 risposte

Rimuovere punteggiatura da un testo.

Ciao ragazzi, mi servirebbe una mano:
Sto facendo un'operazione di rimozione della punteggiatura da un file di testo.
La mia idea, ogni volta che leggo una nuova riga del file, è quella di invocare il metodo replaceAll sulla stringa in questo modo:
miaStringa=miaStringa.replaceAll("\\p{Punct}", "");


La mia domanda è: perchè passando in input questo testo
Ciao, cOME stai:
SPERO TUTTO BENE!
[CIAO] , dOV'È?

ottengo in output questo?
ciao
come
stai
spero
tutto
bene!
[ciao]
,
dov'è?
Non capisco il motivo perchè il replaceAll non riconsoca tutta la punteggiatura ma solo una parte?
Grazie in anticipo dell'aiuto

2 Risposte

  • Re: Rimuovere punteggiatura da un testo.

    riccac ha scritto:


    Non capisco il motivo perchè il replaceAll non riconsoca tutta la punteggiatura ma solo una parte?
    Cosa viene considerato "punteggiatura", è ben descritto nella documentazione di Pattern dove parla del \p{Punct}.

    Posta un pezzo di codice per mostrare cosa fai con il testo.

    Per intenderci, se scrivo:
    String[] strs = { "Ciao, cOME stai:", "SPERO TUTTO BENE!", "[CIAO] , dOV'È?" };
    
    for (String s : strs) {
        s = s.replaceAll("\\p{Punct}", "");
        System.out.println(s);
    }
    L'output è:
    Ciao cOME stai
    SPERO TUTTO BENE
    CIAO  dOVÈ
    Quindi effettivamente rimuove tutta la punteggiatura.
  • Re: Rimuovere punteggiatura da un testo.

    Ciao e grazie andbin, ho risolto il problema.
    Il mio programma legge la prima riga del file e, in seguito legge tutte le rimanenti grazie a un ciclo while.
    Mi ero dimenticato di mettere la replaceAll anche nel corpo del ciclo, ecco perchè non mi restituiva l'output che mi aspettavo ahahah.
    In effetti la prima riga del file era "Ciao, cOME stai:" e quindi la replaceAll eseguiva tutto senza problemi.
    Scusate per la domanda inutile.
    Se può servire a qualcuno posto anche il codice.
Devi accedere o registrarti per scrivere nel forum
2 risposte