簡體   English   中英

Java正則表達式-拆分帶前導特殊字符的字符串

[英]Java regex - split string with leading special characters

我正在嘗試拆分包含空格和特殊字符的字符串。 字符串以特殊字符開頭。 當我運行代碼時,第一個數組元素是一個空字符串。

String s = ",hm  ..To?day,.. is not T,uesday.";
String[] sArr = s.split("[^a-zA-Z]+\\s*");

預期結果為["hm", "To", "day", "is", "not", "T", "uesday"]

有人可以解釋這是怎么回事嗎?

實際結果是["", "hm", "To", "day", "is", "not", "T", "uesday"]

通過在第一個逗號之前的開始處拆分零長度的字符串,拆分的行為符合預期。

要解決此問題,請先刪除所有拆分字符:

String[] sArr = s.replaceAll("^([^a-zA-Z]*\\s*)*", "").split("[^a-zA-Z]+\\s*");

請注意,我已經更改了刪除正則表達式,以從正面修剪空格和非字母的任何序列。

您無需從尾部刪除,因為split會丟棄結果中的空尾元素。

我將其簡化為兩步過程,而不是嘗試實現純正則表達式split()操作:

s.replaceAll( '[^a-zA-Z]+', ' ' ).trim().split( ' ' )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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