2013-02-19 27 views
7

畢竟字符我有一個​​快速的問題, 我得到了下面的代碼的Java:刪除點

String chapterNumber = "14.2.1"; 

我如何能實現獲得類似下面的我的「chapterNumber」的

String mainChapterNumber = "14"; 
一個String

編輯: 我想在所有的數字一個int /字符串(並不重要,我)到第一點

+2

你嘗試過什麼嗎? – 2013-02-19 14:22:43

+0

'indexOf()'和'substring()'是你的朋友。 – jlordo 2013-02-19 14:23:38

+0

我試過......我在論壇上找到了:'chapterNumber..replaceAll(「//.*$」,「」);'但那不起作用 – 2013-02-19 14:24:22

回答

25

如果只有你想輸入字符串的第一部分,你應該做的

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

split2)的第二個參數表明,我們應該只拆分對.第一發生;這比在.的所有實例上分割要快,如果我們不提供第二個參數,會發生什麼情況。


相關文檔

+1

謝謝,正是我所需要的 – 2013-02-19 14:29:14

+0

只是對使用分割方法時的內存分配方式感到好奇而不是子串。當我們解析大字符串時,哪一個會是最好的? – Slowcoder 2013-02-19 16:04:08

+1

謝謝!,正是我在找的! – TharakaNirmana 2013-07-10 03:27:00

1

因爲我們沒有的你實際上是試圖東西任何證據,我會提出一個建議,而不是給你的代碼。

嘗試玩你的字符串的索引。找到第一個點的索引,然後使用substring方法將子串保留在原點和發生點之間。

+0

任何關心評論downvote?是否因爲我避免了勺子餵食顯示沒有努力跡象的OP?我想是的,因爲後來給出明確的完整代碼的答案是upvoted。 – Gamb 2013-02-19 15:04:54

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

Downvoter請評論。 – 2013-02-19 15:04:21

0

嘗試像下面...

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

@jlordo:對,我只是在''之前加''。''。 – Pandian 2013-02-19 14:31:16

+0

我刪除了我的-1,因爲您的答案沒有更多的錯誤。 – jlordo 2013-02-19 14:33:29

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

只需使用以下命令:

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

這將返回當前的章節號碼從第一個字符開始的子串它放置在索引號0中,並在「。」的第一次出現之前結束。

+0

這實際上也是一個有效的解決方案,它爲我工作,謝謝。 – 2016-04-20 10:52:08

1

有多種方法可以做到這一點。 最簡單的一個我會使用一個子建議,和的indexOf: 像這樣:

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

做的另一種方式,它會是這樣:

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

爲了記錄,另一種解決方案使用Guava's splitter

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

這具有不使用正則表達式機械的優點(這是不輕便,不要在循環中使用可接受的解決方案)。