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
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
"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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
"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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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)); } ...
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 se true poi estrarrei direttamente gli N gruppi.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet