2013-03-10 2 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

Не будет достаточно производить требуемый выход, поскольку «[» будет схвачен. –

1

Вам нужно бежать квадратная скобка, так как это специальный символ в регулярном выражении, который используется для выполнения сопоставления. Однако вам также необходимо избегать побега, поскольку обратная косая черта в java имеет особое значение. Вы в конечном итоге с

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

я добавил дополнительный бит в println как согласование в «[» удалит кронштейн.

3

[является специальным символом в регулярных выражениях Java.

попробовать что-то вроде этого:

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

Не будет выдавать требуемый результат, поскольку «[» будет схвачен. –

1

Я хотел бы использовать следующее: String[] strMeaning = meanings.text().split("\s(?=\[)");. Вы не хотите разделить ON [, а скорее на место, которое должно пройти до следующего [.