2017-05-29 77 views
-5

String s = aaa-bbb-ccc-ddd-ee-23-xyz;如何在Java中的5分隔符後截斷字符串?

我需要將上面的字符串轉換爲aaa-bbb-ccc-ddd-ee,這意味着我的輸出應該只在第五個分隔符之前打印單詞。可以幫助解決這個問題嗎?

+0

谷歌搜索yielded http://programming.guide/java/nth-occurrence-in-string.html –

+0

你可以簡單地遍歷字符串並計算您遇到的分隔符的數量。在計算5個分隔符後,創建一個從第0個索引到第5個分隔符索引的子串 – Flaom

+0

這看起來像是一項家庭作業,請注意詳細說明並顯示一些代碼,以便知道至少您已嘗試過某些內容。不要指望人們做你的功課。 –

回答

0

你可以使用正則表達式:

String s = "aaa-bbb-ccc-ddd-ee-23-xyz"; 
Pattern p = Pattern.compile("^\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+"); 
Matcher matcher = p.matcher(s); 
matcher.find(); 
System.out.println(matcher.group(0)); 

輸出爲aaa-bbb-ccc-ddd-ee

如果您已經不僅僅是字母越多,你可以在\\w[^\\-]其抓住所有的字符,但delemiter更換。

0

使用Pattern和Matcher是這樣的:

String s = "aaa-bbb-ccc-ddd-ee-23-xyz"; 
Pattern pattern = Pattern.compile("^((.+?-){4}[^-]+).*$"); 
Matcher matcher = pattern.matcher(s); 
if (matcher.find()) { 
    s = matcher.group(1); 
} 

* - 搜索所有符號。 ? - 懶惰的工作
(* - ?) - ' - '

{4} - 在結果字符串 ' - ',這與符號結束搜索字符序列的4倍

[^ - ] + - 在搜索字符後沒有' - '
。* - 您以後的另一個字符

matcher.group(1) - 返回第一組。這是((。+? - ){4} [^ - ] +)