2013-02-19 21 views
7

Mam krótkie pytanie, mam następujący kodJava: usunąć wszystkie znaki po punkcie

String chapterNumber = "14.2.1"; 

jaki sposób można osiągnąć, aby uzyskać ciąg jak co następuje z moim „chapterNumber”

String mainChapterNumber = "14"; 

Edit: Chcę wszystkie numery w int/String (nie ma znaczenia dla mnie) do pierwszego punktu

+2

I spróbowałeś czegoś? –

+0

'indexOf()' i 'substring()' są twoimi przyjaciółmi. – jlordo

+0

Próbowałem czegoś, co znalazłem na forum typu: 'chapterNumber..replaceAll (" //*** "," ");' ale to nie zadziałało –

Odpowiedz

25

Jeśli jest to tylko pierwsza część ciągu wejściowego chcesz, należy zrobić

String mainChapterNumber = chapterNumber.split("\\.", 2)[0]; 

Drugi argument split (2) wskazuje, że powinniśmy podzielić tylko na pierwszy wystąpienia .; jest szybszy niż podział na wszystkie instancje ., co byłoby, gdybyśmy nie dostarczyli tego drugiego argumentu.


stosownej dokumentacji

+1

Dzięki, dokładnie to, czego potrzebowałem. –

+0

Po prostu ciekawa, w jaki sposób będzie przydzielana pamięć w tym przypadku przy użyciu metody podziału zamiast podłańcucha. Który z nich byłby najlepszy, gdybyśmy analizowali duże łańcuchy? – Slowcoder

+1

dzięki !, właśnie tego szukałem! – TharakaNirmana

1

Ponieważ nie mamy żadnego dowodu faktycznie próbuje coś zrobię sugestię zamiast dać Ci kod.

Spróbuj grać z indeksami Twojego ciągu. Znajdź indeks pierwszej kropki, a następnie użyj metody substring, aby zachować podłańcuch między początkiem i początkiem.

+0

Czy ktoś ma ochotę skomentować upadłość? Czy to dlatego, że unikałem podawania łyżką OP, który nie wykazuje oznak wysiłku? Chyba tak, ponieważ późniejsza odpowiedź, która daje wyraźny pełny kod, została przegłosowana. – Gamb

4
String chapterNumber = "1.2.1"; 
int index = chapterNumber.indexOf("."); 
String mainChapterNumber = chapterNumber.substring(0,index); 
+0

Downvoter prosimy o komentarz. –

0

Spróbuj jak poniżej ...

String chapterNumber = "1.2.1"; 
String[] getdt = chapterNumber.split("\\."); 
String mainChapterNumber = getdt[0]; 
+0

@jlordo: poprawne, dodaję tylko '\\' przed '.' – Pandian

+0

Usunąłem moje -1, ponieważ twoja odpowiedź nie zawiera więcej błędów. – jlordo

0
String mainChapterNumber = chapterNumber.substring(0,chapterNumber.indexOf(".")); 
8

Wystarczy użyć następujących:

String mainChapterNum = chapterNumber.substring(0, chapterNumber.indexOf(".")); 

ten powróci podciąg swojego aktualnego numeru rozdziału począwszy od pierwszego znaku który jest umieszczony w indeksie 0 i kończy się przed pierwszym pojawieniem się "."

+0

To również było prawidłowe rozwiązanie, zadziałało dla mnie, dzięki. –

1

Istnieje wiele sposobów na zrobienie tego. Najprostszym jeden Polecam stosuje podciąg i indexOf: Jak to:

String result = chapterNumber.substring(0, chapterNumber.indexOf(".")); 

Innym ze sposobów byłoby tak:

String result = chapterNumber.split("\\.")[0]; 
0

Tylko dla przypomnienia, inne rozwiązanie stosując Guava's splitter:

String mainChapterNumber = Iterables.get(Splitter.on('.').split(chapterNumber), 0); 

ma to tę zaletę, że nie przy użyciu maszyny regularne wyrażenie (które nie jest lekki, nie używaj zaakceptowanego rozwiązania w pętli).

Powiązane problemy