簡體   English   中英

Java用正則表達式拆分字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM