[英]java split string with regex
我想通過將所有非字母設置為分隔符來分割字符串。
String[] word_list = line.split("[^a-zA-Z]");
但是用以下輸入
11:11你好世界
word_list在“ hello”和“ world”之前包含許多空字符串
請告訴我原因。 謝謝。
這是您的字符串,其中每個^
字符均表示[^a-zA-Z]
的匹配項:
11:11 Hello World
^^^^^^ ^
split
方法查找這些匹配項中的每一個,並基本上返回^
字符之間的所有子字符串。 由於任何有用數據之前都有六個匹配項,因此在獲得字符串"Hello"
之前,您將以5個空子字符串結尾。
為防止這種情況,您可以手動過濾結果以忽略任何空字符串。
因為您的正則表達式匹配每個單獨的非字母字符。 就像分開
",,,,,,Hello,World"
在逗號上。
您將需要一個表達式,該表達式一次與整個非字母字符序列匹配,例如:
line.split("[^a-zA-Z][^a-zA-Z]*")
我仍然認為您的示例將得到一個前導的空字符串,因為如果逗號是分隔符",Hello,World"
就像分隔",Hello,World"
。
以下會做嗎?
String[] word_list = line.replaceAll("[^a-zA-Z ]","").replaceAll(" +", " ").trim().split("[^a-zA-Z]");
我在這里要做的是在拆分之前刪除所有非字母字符,然后用一個空格替換多個空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.