我有一個像分割使用多個分隔符在Java中的字符串
String myString = "hello world~~hello~~world"
字符串我使用的分割方法是這樣
String[] temp = myString.split("~|~~|~~~");
我想要的陣列溫度只包含隔開的字符串〜,~~或~~~。
但是,因此創建的臨時數組的長度爲5,另外2個「字符串」爲空字符串。
我希望它只包含我的非空字符串。請幫忙。謝謝!
我有一個像分割使用多個分隔符在Java中的字符串
String myString = "hello world~~hello~~world"
字符串我使用的分割方法是這樣
String[] temp = myString.split("~|~~|~~~");
我想要的陣列溫度只包含隔開的字符串〜,~~或~~~。
但是,因此創建的臨時數組的長度爲5,另外2個「字符串」爲空字符串。
我希望它只包含我的非空字符串。請幫忙。謝謝!
你應該用的量詞與你的性格:
String[] temp = myString.split("~+");
String#split()
需要一個正則表達式。 ~+
將匹配1個或多個~
,因此它將分割爲~
或~~
或~~~
等等。
String[] temp = myString.split("~{1,3}");
:
另外,如果只是要分割上~
,~~
,或~~~
,則可以通過使用{m,n}
量詞,它匹配從米到Ñ倍的圖案限制重複
當您按照自己的方式拆分它時,它將在~
上拆分a~~b
兩次,因此中間元素將爲空字符串。
你可能也通過反轉您的分隔符的順序是這樣解決了這個問題:
String[] temp = myString.split("~~~|~~|~");
這將首先嚐試拆就~~
,分裂之前~
和做工精細。但是你應該使用第一種方法。
只需轉動模式圍:
String myString = "hello world~~hello~~world";
String[] temp = myString.split("~~~|~~|~");
+1用於計算OP實際要求的內容。 –
試試這個:
myString.split("~~~|~~|~");
它肯定會工作。在你的代碼中,實際上第一次發生~
時會發生什麼,它將作爲第一個分隔符並從該點開始拆分字符串。所以它不會在您的字符串中的任何地方得到~~
或~~~
,儘管它在那裏。像:
[hello world]~[]~[hello]~[]~[world]
方括號被分成5個不同的字符串值。
請格式化您的代碼與相應的標記爲了可讀性:http://stackoverflow.com/editing-help#code –
對不起,我會關注:) –