[英]Split string by whitespaces removes new line characters
我正在用空格分割字符串,但由於某種原因,新行字符被刪除。 例如:
String[] splitSentence = "Example sentence\n\n This sentence is an example".
split("\\s+");
splitSentence將包含:
["Example", "sentence", "This", "sentence", "is", "an", "example"]
如果我這樣做:
String[] splitSentence = "Example sentence\n\n This sentence is an example".
split("\\s");
splitSentence將包含:
["Example", "sentence", "", "", "This", "sentence", "is", "an", "example"]
我正在努力實現這樣的目標:
["Example", "sentence\n\n", "This", "sentence", "is", "an", "example"]
或者像這樣:
["Example", "sentence", "\n", "\n", "This", "sentence", "is", "an", "example"]
我已經嘗試了很多沒有運氣的事情......任何幫助都將受到贊賞。
String[] splitSentence = "Example sentence\n\n This sentence is an example".
split(' ');
這個版本應該工作,所以空白空間將只刪除而不是新行。
按空格和制表符分割(不帶換行符):
String[] splitSentence = "Example sentence\n\n This sentence is an example".split("[ \t]+");
結果: ["Example", "sentence\\n\\n", "This", "sentence", "is", "an", "example"]
在正則表達式中, \\s
被定義為等同於此集合中的字符:
[ \t\n\x0B\f\r]
(見javadoc )。 如果您不希望換行符被視為空格,那么您可以編寫自己的集合:
splitSentence = "Example sentence\n\n This sentence is an example".split("[ \t\\x0B\f\r]+");
(或消除您不希望split
識別的其他字符)。
( \\t
是TAB, \\x0B
是垂直制表符, \\f
是FF(換頁), \\r
是CR)
編輯:這個方法似乎產生了你提到的第二個結果,其中\\n
是作為單獨的字符串返回的:
splitSentence = "Example sentence\n\n This sentence is an example".split("[ \t\\x0B\f\r]+|(?=\n)");
這使用前瞻分割在緊跟着\\n
的點之后,但不將\\n
視為將從結果中刪除的分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.