Jak wyciągnąć liczby ze stringa?

Odpowiedz Nowy wątek
2010-06-18 15:35
michalisol
0

Witam,

mam problem. Potrzebuję wyciągnąć ze Stringa wszystkie liczby i zapisać je w tabeli.
Np. gdy mam String "123,124popopop90cichy92????11.777:FASDgA,..41" to do tabeli powinny się dodać liczby: 123, 124, 92, 11, 777, 41. Każda z tych liczb powinna być w osobnej komórce tabeli.

Próbowałem coś porobić z replaceAll, ale nie wyszło...

Proszę o pomoc.
Dziękuję i pozdrawiam.

Pozostało 580 znaków

2010-06-18 15:37
michalisol
0

EDIT:
Oczywiście wyciągnięta powinna być także liczba 90. Zapomniałem o niej, a ponieważ nie jestem zarejestrowany, nie mogłem edytować posta.
Sorry i dzięki.

Pozostało 580 znaków

2010-06-18 16:08
::.
0
        String s = "123,124popopop90cichy92????11.777:FASDgA,..41";
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(s);
        List<Integer> ints = new ArrayList<Integer>();
        while (m.find()) {
            String i = m.group();
            ints.add(Integer.valueOf(i));
        }
        System.out.println(ints);

Pozostało 580 znaków

2010-06-18 16:22
wpisałem nick
0

Trochę szybsze :-P

private List<Integer> getNumbers(String s) {
    List<Integer> l = new ArrayList<Integer>();

    for (int i = 0; i < s.length() - 1; i++) {
        if (Character.isDigit(s.charAt(i))) {
            String  num = "";
            while (i < s.length() && Character.isDigit(s.charAt(i))) {
                num += s.charAt(i++);
            }
            l.add(Integer.parseInt(num));
        }
    }
    return l;
}

Pozostało 580 znaków

2010-06-18 17:53
0

Można też tak :)

private List<Integer> getNumbers(String s) {
        List<Integer> l = new ArrayList<Integer>();
        String  num = "";
        for (int i = 0; i < s.length() - 1; i++) {
            char c = s.charAt(i);
            if (Character.isDigit(c)) {
                num += c;
            } else if (num.length()>0)
            {
                l.add(Integer.valueOf(num));
                num = "";
            }
        }
        return l;
    }

Pozostało 580 znaków

2010-06-18 18:33
javauser2
0

zle cieniasy. jak bedzie przecinek w stringu to co ? trzeba dac bardziej rozbudowane ify

Pozostało 580 znaków

2010-06-18 18:40
0
javauser2 napisał(a)

zle cieniasy. jak bedzie przecinek w stringu to co ? trzeba dac bardziej rozbudowane ify

nic, nie trzeba dodawać nic więcej.

Pozostało 580 znaków

2010-06-18 21:33
wpisałem nick
0

Wkradł mi się jeden błąd w warunku dla pętli for. Powinno być:

private List<Integer> getNumbers(String s) {
    List<Integer> l = new ArrayList<Integer>();

    for (int i = 0; i < s.length(); i++) {
        if (Character.isDigit(s.charAt(i))) {
            String  num = "";
            while (i < s.length() && Character.isDigit(s.charAt(i))) {
                num += s.charAt(i++);
            }
            l.add(Integer.parseInt(num));
        }
    }
    return l;
}

Pozostało 580 znaków

2010-06-19 00:18
::.
0

Okuka ale sie uwzieliscie. Autor postu juz chyba ma za duzy wybor... Pomijajac moja propozycje, najwolniejsza :-P

Pozostało 580 znaków

2010-06-19 00:34
javauser2
0

nie umiecie czytac glaby...

Jak wyciągnąć liczby
string autora = "123,124a....."

Pogrubilem to co autor szuka, nie odroznaicie cyfr od liczb ?
liczba to 123,124

Pozostało 580 znaków

2010-06-19 02:30
wpisałem nick
0
import java.util.ArrayList;
import java.util.List;

public class SomeClass {

    private static List<Integer> getNumbers(String s) {
        List<Integer> l = new ArrayList<Integer>();
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (Character.isDigit(chars[i])) {
                String  num = "";
                while (i < chars.length && Character.isDigit(chars[i])) {
                    num += chars[i++];
                }
                l.add(Integer.parseInt(num));
            }
        }
        return l;
    }

    public static void main(String args[]) throws Exception {
        System.out.println(getNumbers("123,124popopop90cichy92????11.777:FASDgA,..1"));
    }   
}

Uruchomienie tego kodu wypluje:
[123, 124, 90, 92, 11, 777, 1]
Masz coś do dodania głąbie?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0