2013-11-03 303 views
2

我有包含用以下格式表示的標記的文本:[text other text]如何使用String.split提取方括號之間的文本

我想分裂用方括號作爲分隔符字符串,但這:

String.split("\\[|\\]"); 

這不會給預期的結果。

我該怎麼做?

+0

哪個輸入,哪個結果是你期望得到的,哪個結果是你得到的? – SJuan76

+0

請分享您的意見。 –

+0

如果你對[方括號內的值]感興趣,你最好使用正則表達式和組匹配器。 – l3dx

回答

7

我不知道如果一個人可以用split()做到這一點。隨着你的模式的模式尋找和[^\\]]+(「所有符號,直到右括號」),這是相當直接的:

public static void main(String[] args) { 
    String line = "xx [text other text], [jili u babusi dva veselikh gusya], " + 
     "[a granny there was having two gay gooses] zz"; 

    Matcher matcher = Pattern.compile("\\[([^\\]]+)").matcher(line); 

    List<String> tags = new ArrayList<>(); 

    int pos = -1; 
    while (matcher.find(pos+1)){ 
     pos = matcher.start(); 
     tags.add(matcher.group(1)); 
    } 

    System.out.println(tags); 
} 
1

可以使用Pattern.quote( 「你的模式GOES HERE」),如下所述,

str.split(Pattern.quote("[")); 
-1

可以使用分割法,並把答案在數組

字符串[] d = s.split(「(\\ [)|(\\])」);

+1

嘗試解釋你的代碼,而不是不知道爲什麼寫它 –

0

我知道這是問4年前,但對於具有相同/相似的問題,即土地在這裏(像我一樣)的人,有什麼比使用正則表達式更簡單:

String result = StringUtils.substringBetween(str, "[", "]"); 

在你的榜樣,result將作爲「文本其他文本」返回,如果需要,可以使用StringUtils.split()進一步分割。我會推薦用於各種(相對簡單的)字符串操作的StringUtils庫;它自動處理空輸入等事情,這可以方便。

的文檔substringBetween(): https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#substringBetween-java.lang.String-java.lang.String-java.lang.String-

還有其他兩個版本此功能,取決於打開和關閉定界符是否相同,以及分隔符(或多個)是否發生在(多個)目標字符串多次。

相關問題