Obecnie pracuję na funkcji parsowania ciągów i nagle znalazłem ten problem. Na przykład:

String data = "1234567890JOHN F DOE";

String ID = data.substring(0,9);
String Name = data.substring(10, 19);

Oczekiwane wyjście, które chcę dla ID to "1234567890" Jedynymi postaciami, które mam tylko "123456789" i "0".

Czy mogę użyć dowolnej funkcji zamiast substring(...)?

2
Maki Tamayo 3 czerwiec 2018, 18:33

4 odpowiedzi

Najlepsza odpowiedź

Jak wspomniano w Dokumenty wskaźnik końcowy substring(...) jest indeks wprowadzany minus jeden. Co chcesz zrobić, to:

String data = "1234567890JOHN F DOE";
String ID = data.substring(0,10); 
String Name = data.substring(10, 20);

Wynik:

ID: 1234567890

Name: JOHN F DOE
3
GBlodgett 3 czerwiec 2018, 15:42

Otrzymasz "123456789", ponieważ parametr końcowy w metodzie substring(...) nie jest integracyjny, więc aby uzyskać "1234567890", musisz użyć data.substring(0,10) :)

3
Turing85 3 czerwiec 2018, 15:40

Korzystanie z podciążenia możesz po prostu zrobić: str.substring (0,10); To jest inny sposób:

 String pattern="\\d+";
    String text="1234567890JOHN F DOE";
    Pattern p=Pattern.compile(pattern);
    Matcher m=p.matcher(text);
    while (m.find()) {
        System.out.println(text.substring(m.start(), m.end()));
    }
0
Adya 3 czerwiec 2018, 15:39

Zrozummy Partdex i EndIndex, musisz to zrobić według kodu:

String data = "1234567890JOHN F DOE";
String ID = data.substring(0,10);
String Name = data.substring(10, 20);
    System.out.println("ID:" + ID);
    System.out.println("Name: "+  Name);

wyjście:

ID: 1234567890

Name: JOHN F DOE
0
Abderrahmen 3 czerwiec 2018, 15:54