2013-02-19 11 views
7

Ho una domanda rapida, ho ricevuto il seguente codiceJava: rimuovere tutti i caratteri dopo il punto

String chapterNumber = "14.2.1"; 

come posso ottenere per ottenere una stringa simile alla seguente fuori dalla mia "chapterNumber"

String mainChapterNumber = "14"; 

Edit: voglio tutti i numeri in un int/String (non importa a me) fino al primo punto

+2

E hai provato qualcosa? –

+0

'indexOf()' e 'substring()' sono i tuoi amici. – jlordo

+0

Ho provato sth che ho trovato su un forum come: 'chapterNumber..replaceAll (" //.*$ "," ");' ma non ha funzionato –

risposta

25

Se è solo la prima parte della stringa di input che si desidera, si dovrebbe fare

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

Il secondo argomento di split (2) indica che dovremmo dividere solo sul prima occorrenza di .; è più veloce della suddivisione in tutte le istanze di . che è ciò che accadrebbe se non fornissimo questo secondo argomento.


relativa documentazione

+1

Grazie, esattamente ciò di cui avevo bisogno –

+0

Solo curioso di sapere come sarà l'allocazione di memoria in questo caso quando si usa il metodo split invece della sottostringa. Quale sarebbe il migliore quando analizziamo stringhe di grandi dimensioni? – Slowcoder

+1

grazie !, proprio quello che stavo cercando! – TharakaNirmana

1

Dal momento che non abbiamo alcuna prova di voi in realtà provare qualcosa, io dare un suggerimento invece di dare il vostro codice.

Provare a giocare con gli indici della stringa. Trova l'indice del primo punto e quindi utilizza il metodo substring per mantenere la sottostringa tra l'origine e quella situazione.

+0

Qualcuno si preoccupa di commentare il downvote? È perché ho evitato di mollare un PO che non mostra alcun segno di sforzo? Immagino di sì, dal momento che una risposta successiva che fornisce il codice completo esplicito è upvoted. – Gamb

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

Il downvoter si prega di commentare. –

0

Prova come qui di seguito ...

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

@jlordo: corretto, aggiungo semplicemente "\\" di fronte a "." – Pandian

+0

Ho rimosso il -1 perché la risposta non ha più errori. – jlordo

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

Basta usare il seguente:

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

Ciò restituirà una stringa del numero del capitolo corrente a partire dal primo carattere che viene inserito nel numero indice 0 e termina prima della prima comparsa di "."

+0

Questa infatti era una soluzione valida, per me ha funzionato, grazie. –

1

Ci sono molti modi per farlo. La più facile mi sento di raccomandare sta utilizzando una stringa, e indexOf: Ti piace questa:

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

Un altro modo di farlo sarebbe come questo:

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

Solo per la cronaca, un'altra soluzione utilizzando Guava's splitter:

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

Questo ha il vantaggio di non utilizzare macchinari espressione regolare (che non è leggero, non usare la soluzione accettata in un ciclo).

Problemi correlati