![](/img/trans.png)
[英]Java String Split on any character (including regex special characters)
[英]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.