Wpis z mikrobloga

Mireczki pomocy. Potrzebuje wyciągnąć współrzędne z poniższego Stringa

14725422,99968,ZWKNHGTTGJAK,(28-20),(6-29),(5-15),(22-28),(6-28),(12-4),(19-8),, //wsp to 28 i 20 w nastepnym 6 i 29

Pattern p = Pattern.compile("([(])(([0-9]){1,3})([-])([0-9]{1,3})([)])");
...
Matcher m = p.matcher(country[i]); // country[3] = "(28-20)" country[3] = "(6-29)" itd.
...
While (m.find()) {
String group = m.group(1); //tutaj chciałem jako group(1) miec 28 , 6 , 5 , 22 itd
System.out.println(group);
}

Szukałem na StackOverflow ale znalazłem...
Doc Oracla jest dla mnie totalnie nie czytelny i nie zrozumiały
Z góry dziękuje za pomoc
#java
  • 8
@PanieCoPan: I w czym problem? Skoro współrzędnę są w pierwszych 2 nawiasach to żaden problem to wydobyć..

iteruj przez string dopóki nie natrafisz na (
jeżeli tak
przesun na kolejny znak
wczytuj dopoki nie trafisz na -
przesun na kolejny znak
wczytuj dopoki nie trafisz na)

i analogicznie dalej, nie wszystko trzeba robić regexpem, można napisać własny parser.
@PanieCoPan: Nie lepiej zrobic split po przecinku (,) i otrzymac tablice elementow. Nastepnie odczytac elementu od trzeciego indeksu wycinajac nawiasy i przerabiajac liczby na wspolrzedne? Ja bym tu regex nawet nie uzywal.
Dane przychodzace pewnie tez sa podobna struktura wiec warto przetwarzac dane w podobny sposob jak ktos stworzyl.
@radoslaw_rumian: Dzięki za linka skorzystałem z niego.

Efekt:

//Wyciagam wspolrzedne z (x-y)
public static int[] fraction (String fractionString) {
fractionString = fractionString.replace("(", "");
fractionString = fractionString.replace(")", "");
StringTokenizer st = new StringTokenizer(fractionString, "-");
int number1 = Integer.parseInt(st.nextToken());
int number2 = Integer.parseInt(st.nextToken());
//Zwracam tablice z x i y
return new int[]{number1, number2};

@Philopolemus_Fronius , @yale , @another_throwaway23 : Dzięki wielkie za pomoc. Przeanalizowałem wasze pomysły i wybrałem najprostszy do zaimplementowania dla mojego
Albo prościej byłoby to zrobić StringTokenizerem


@radoslaw_rumian:

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.