Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Rimuovere caratteri da una stringa

    Ciao a tutti,
    vorrei sapere se esiste un metodo per "ripulire" una stringa.
    Es. ho 60?25^2
    Vorrei prelevare i numeri: 60, 25 e 2.
    Come potrei fare ?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    vorrei sapere se esiste un metodo per "ripulire" una stringa.
    Es. ho 60?25^2
    Vorrei prelevare i numeri: 60, 25 e 2.
    Come potrei fare ?
    "Rimuovere" è un po' inappropriato, nel senso che non mi pare che vuoi comporre una stringa con qualcosa in meno dell'originale.
    Si tratta semmai di una "estrazione" di dati.

    Il modo banale/diretto: usando un mix di indexOf() e substring() sulla stringa.
    Il modo un po' più evoluto e sofisticato: usando le "espressioni regolari" con le classi Pattern/Matcher in java.util.regex.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    vorrei sapere se esiste un metodo per "ripulire" una stringa.
    Es. ho 60?25^2
    Vorrei prelevare i numeri: 60, 25 e 2.
    Come potrei fare ?
    "Rimuovere" è un po' inappropriato, nel senso che non mi pare che vuoi comporre una stringa con qualcosa in meno dell'originale.
    Si tratta semmai di una "estrazione" di dati.

    Il modo banale/diretto: usando un mix di indexOf() e substring() sulla stringa.
    Il modo un po' più evoluto e sofisticato: usando le "espressioni regolari" con le classi Pattern/Matcher in java.util.regex.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ho fatto così:
    codice:
    ....
     this.longitudine = (parti[0]);
                System.out.println(parti[0] + "\t");
    
                ArrayList<Integer> numbers = new ArrayList<Integer>();
                Pattern p = Pattern.compile("\\d+");
                Matcher m = p.matcher(longitudine);
    
                while (m.find()) {
                    numbers.add(Integer.parseInt(m.group()));
                }
                if (numbers.size() <= 0) {
                    numbers.add(-1);
                }
                int i;
                for (i=0; i < numbers.size(); i++) {
                    System.out.println(numbers.get(i));
                }
    ...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Innanzitutto se quella è una longitudine ..... perché hai 60?25^2 ? Provo a indovinare? Questioni di charset ...

    Quote Originariamente inviata da roquentin Visualizza il messaggio
    codice:
                Pattern p = Pattern.compile("\\d+");
                Matcher m = p.matcher(longitudine);
    
                while (m.find()) {
                    numbers.add(Integer.parseInt(m.group()));
                }
    Non è che è sbagliato .... ma se c'è un formato ben preciso fatto di parti fisse e parti da estrarre, allora anche solo per poter "validare" l'intero formato (che tu qui non stai facendo), io farei una regex per l'intero formato e sfruttando i "gruppi" farei prima un matches() per validare l'intero input e se true poi estrarrei direttamente gli N gruppi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto se quella è una longitudine ..... perché hai 60?25^2 ? Provo a indovinare? Questioni di charset ...


    Non è che è sbagliato .... ma se c'è un formato ben preciso fatto di parti fisse e parti da estrarre, allora anche solo per poter "validare" l'intero formato (che tu qui non stai facendo), io farei una regex per l'intero formato e sfruttando i "gruppi" farei prima un matches() per validare l'intero input e poi estrarrei direttamente gli N gruppi.
    Era un esempio, il formato è
    59�19'45"

    la cosa importante è che mi vado a dividere i bloocchi di numeri per poi ricostruirmi l'informazione

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Era un esempio, il formato è
    59�19'45"
    Sì ma il punto dubbio è quel �
    Se nel file rappresenta ° (simbolo dei gradi) e tu leggi con charset inappropriato e il char che ottieni nel String è malformato, usando un pattern completo potrebbe non corrispondere (oltre a non essere una bella cosa, comunque).

    Se una stringa è es. 59°19'45" il pattern lo farei "(\\d+)\u00B0(\\d+)'(\\d+)\""

    (\u00B0 è l'escape unicode del simbolo dei gradi, giusto solo per non mettere caratteri speciali nel sorgente).

    Quindi matches() sul Matcher e se true, allora prendo group(1), group(2), group(3)
    Se matches() dà false, l'input è malformato (=errore).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.