PDA

View Full Version : [JAVA] Numeri da una stringa


pumax84
17-10-2008, 11:26
Ciao a tutti.

C'è un modo "veloce" per estrarre dei numeri contenuti in una stringa? Non intendo però solo numeri ad una cifra, anche a più cifre.

Ad esempio, avendo una stringa del genere:
ds21#.2as123fd0998ska

dovrei memorizzare in un array di int[] i numeri seguenti: 21, 2, 123, 998.

Grazie anticipatamente.

Ciao,
Francesco

pumax84
17-10-2008, 13:08
Mi è stato suggerito altrove di utilizzare le espressioni regolari.

Posto qui per completezza il metodo che ho scritto/implementato:
import java.util.regex.*;
import java.util.ArrayList;
public ArrayList<Integer> extractingNumbers(String s) {

ArrayList<Integer> numbers = new ArrayList<Integer>();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(s);

while (m.find()) {
numbers.add(Integer.parseInt(m.group()));
}

if(numbers.size() > 0) {
return numbers;
} else {
ArrayList<Integer> blankArray = new ArrayList<Integer>();
blankArray.add(-1);
return blankArray;
}

}

banryu79
17-10-2008, 13:35
puoi anche scriverlo così, ha lo stesso significato e, almeno per me, mi sembra più chiaro:

public ArrayList<Integer> extractingNumbers(String s) {

ArrayList<Integer> numbers = new ArrayList<Integer>();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(s);

while (m.find()) {
numbers.add(Integer.parseInt(m.group()));
}

if(numbers.size() <= 0) {
numbers.add(-1);
}

return numbers;

}