下面一行將字符串拆分爲(.
),(,
),(:
)和換行符(\n
)字符。在連字符處分割字符串
String[] textPhrases = text.split("[.,:\\n]");
我需要拆分的連字符了,但是這並不工作:
String[] textPhrases = text.split("[.,:/-/\\n]");
我缺少什麼或者做錯了嗎?謝謝。
下面一行將字符串拆分爲(.
),(,
),(:
)和換行符(\n
)字符。在連字符處分割字符串
String[] textPhrases = text.split("[.,:\\n]");
我需要拆分的連字符了,但是這並不工作:
String[] textPhrases = text.split("[.,:/-/\\n]");
我缺少什麼或者做錯了嗎?謝謝。
這是正則表達式。連字符在字符類中有特殊含義。你需要連字符放置在類的第一或最後項目:
[-.,:\n]
我需要在連字符分開過,但是這並不工作...我在想什麼或做錯了?
要首先回答你的問題,首先了解這張圖片有什麼問題,你的連字符周圍有你的字符類的正斜槓。相反,你應該使用轉義序列字符(\\
)
[.,:/-/\\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]
你必須使用:
String[] textPhrases = text.split("[.,:\\-\\n]");
通常情況下,人們也可以逃避連字符:'[,。:/ \ -/\ n]'。但是這可能是實現定義的。 – usr2564301
@Jongware當你不必要的時候爲什麼會逃跑?它只是增加了混亂。 –
如果你想在任何地方插入連字符,你必須「:)你的是一個完全有效的解決方案,但它需要一個小心的地方插入連字符。轉義它可以讓你把它放在任何地方。 – usr2564301