You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何同时按空格、点号和逗号分割字符串?代码问题咨询

解决多分隔符分割字符串并保留单词的问题

我猜你大概率是遇到分割后出现空字符串的情况了吧?比如连续分隔符(像hello,,world)或者字符串首尾有分隔符时,当前的正则就会产生无用的空元素,咱们来一步步优化:

简洁高效的正则写法

首先可以把你的正则简化并增强,用匹配一个或多个分隔符的方式来避免空元素:

// 匹配一个或多个空格、点号、逗号、制表符,直接分割出有效单词
String[] str = array.get(0).split("[ .,\\t]+");

这里的[ .,\\t]+表示把连续的分隔符当作一个整体处理,不会在结果里留下空字符串。如果还需要覆盖换行、回车这类空白字符,直接用\\s(匹配所有空白类型)更省心:

String[] str = array.get(0).split("[.,\\s]+");

\\s等价于[ \t\n\x0B\f\r],能处理绝大多数场景下的空白分隔符。

备选方案:手动过滤空元素

要是因为某些限制没法修改正则,也可以在分割后手动剔除空字符串:

// 先用原正则分割
String[] tempArray = array.get(0).split("[ ]|[.]|[,]|[ \t]");
// 过滤空元素
List<String> validWords = new ArrayList<>();
for (String item : tempArray) {
    if (!item.isEmpty()) {
        validWords.add(item);
    }
}
// 转回数组(如果需要的话)
String[] str = validWords.toArray(new String[0]);

对了,顺便提一句:你原来的正则[ ]|[.]|[,]|[ \t]其实可以简化成[ .,\\t],方括号内的字符本身就是“或”的关系,不需要用|分隔,写法更简洁哦~

内容的提问来源于stack exchange,提问作者Merve K.

火山引擎 最新活动