我正在尝试拆分一个包含空格和特殊字符的字符串。字符串以特殊字符开头。 当我运行代码时,第一个数组元素是一个空字符串。
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"]
答案 0 :(得分:3)
通过在第一个逗号之前的开始处拆分零长度的字符串,拆分行为符合预期。
要解决此问题,请首先从头开始删除所有拆分字符:
String[] sArr = s.replaceAll("^([^a-zA-Z]*\\s*)*", "").split("[^a-zA-Z]+\\s*");
请注意,我已经更改了删除正则表达式,以从正面修剪掉任意顺序的空格和非字母。
您无需从尾部删除,因为split会丢弃结果中的空尾元素。
答案 1 :(得分:1)
我将其简化为两步过程,而不是尝试实现纯正则表达式count < 2
操作:
split()