2014-04-21 76 views
2

下面一行將字符串拆分爲(.),(,),(:)和換行符(\n)字符。在連字符處分割字符串

String[] textPhrases = text.split("[.,:\\n]"); 

我需要拆分的連字符了,但是這並不工作:

String[] textPhrases = text.split("[.,:/-/\\n]"); 

我缺少什麼或者做錯了嗎?謝謝。

回答

3

這是正則表達式。連字符在字符類中有特殊含義。你需要連字符放置在類的第一最後項目:

[-.,:\n] 
+0

通常情況下,人們也可以逃避連字符:'[,。:/ \ -/\ n]'。但是這可能是實現定義的。 – usr2564301

+0

@Jongware當你不必要的時候爲什麼會逃跑?它只是增加了混亂。 –

+0

如果你想在任何地方插入連字符,你必須「:)你的是一個完全有效的解決方案,但它需要一個小心的地方插入連字符。轉義它可以讓你把它放在任何地方。 – usr2564301

2

我需要在連字符分開過,但是這並不工作...我在想什麼或做錯了?

要首先回答你的問題,首先了解這張圖片有什麼問題,你的連字符周圍有你的字符類的正斜槓。相反,你應該使用轉義序列字符(\\

[.,:/-/\\n] 
    ^^^ Remove these and replace with the escape sequence character (\\-) 

在一個字符類[],你可以放置一個連字符(-)作爲第一最後字符。您也可以跳過它([.,:\\-\n])添加連字符以匹配。

String s = "hey,hi.foo:bar\nbaz-quz"; 
String[] parts = s.split("[.,:\n-]"); 
System.out.println(Arrays.toString(parts)); 

輸出

[hey, hi, foo, bar, baz, quz] 
0

你必須使用:

String[] textPhrases = text.split("[.,:\\-\\n]");