2013-03-10 168 views
-2

我有一個很長的字符串,我想分割爲基於規則的。 我的字符串是:如何在JAVA中拆分字符串

[1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş [2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük [3] (halk ağzı) abla, anne [4] (halk ağzı) dar pantolon üzerine giyilen ceket 

,我想表明這樣的:

[1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş 
[2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük 
[3] (halk ağzı) abla, anne 
[4] (halk ağzı) dar pantolon üzerine giyilen ceket 

我的代碼是:

String[] strMeaning = meanings.text().split("["); 
     for(String key : strMeaning) 
     { 
      System.out.println(key); 
     } 

,而我看到的錯誤是:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 
[ 
^ 
    at java.util.regex.Pattern.error(Unknown Source) 
    at java.util.regex.Pattern.clazz(Unknown Source) 
    at java.util.regex.Pattern.sequence(Unknown Source) 
    at java.util.regex.Pattern.expr(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at java.util.regex.Pattern.<init>(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at java.lang.String.split(Unknown Source) 
    at java.lang.String.split(Unknown Source) 
    at wikipedia.CreateXML.wordMeaning(CreateXML.java:39) 
    at wikipedia.CreateXML.prepareData(CreateXML.java:33) 
    at wikipedia.Main.main(Main.java:32) 

我想不通。我該如何分裂我想要的方式?在此先感謝

回答

5

左方括號[是用來表示character class開始時的特殊字符,你需要逃避它:

meanings.text().split("\\["); 
+0

由於「[」將被抓取,不會產生所需的輸出。 – 2013-03-10 22:47:31

1

你需要逃脫方括號,因爲這是正則表達式中的一個特殊字符,這是用來執行匹配的。但是,你也需要逃避逃避,因爲java中的反斜槓有特殊的含義。你最終

String[] strMeaning = meanings.text().split("\\["); 
    for(String key : strMeaning) 
    { 
     System.out.println("[" + key); 
    } 

我加在println作爲匹配的額外位「[」將卸下支架。

3

[是Java正則表達式中的特殊字符。

嘗試這樣:

String[] temp = text.split("\\["); 
+0

由於「[」將被抓取,不會完全產生所需的輸出。 – 2013-03-10 22:48:54

1

我會使用以下命令:String[] strMeaning = meanings.text().split("\s(?=\[)");。您不想在[上分割,而是在下一個[之前分割。