Jak wyciągnąć liczby ze stringa?

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.

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.

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);
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;
}
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;
	}
0

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

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.

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;
}
0

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

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

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?

0

@javauser2: chłopie irytujesz mnie, napisał też że algorytm ma wyciągnąć 123, 124, 92, 11, 777, 41

edit: Widzę że już ci to wytłumaczono

0

Nie karmic trolla.

0

Sprawdziłem Wasze metody i wszystkie dobrze działają. O to chodziło :)
Dziękuję wszystkim za pomoc.
Pozdrawiam

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