You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用RegEx调用str.split返回空元素,如何正确提取四则运算符?

问题原因

你原本的split逻辑是通过匹配「非运算符的单个字符」作为分隔符切割字符串,字符串开头和连续的非运算符字符切割后会产生大量空字符串,不符合需求。

解决方案

推荐直接用正则匹配提取所有运算符的方式实现,逻辑更清晰,也不会产生多余空串:

修改后的代码

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Arrays;

// 核心逻辑部分
public List<String> getOperators(String str) {
    List<String> operators = new ArrayList<>();
    // 匹配+、-、*、/四个运算符
    Pattern pattern = Pattern.compile("[+\\-*/]");
    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
        operators.add(matcher.group());
    }
    return operators;
}

// 如果需要返回数组类型,调用时可以这样写:
// String[] operandsArray = getOperators(str).toArray(new String[0]);

效果验证

  • 输入"55+5",输出数组内容为["+"]
  • 输入"55+6-6*6/6",输出数组内容为["+", "-", "*", "/"]
  • 输入"5+5+5+5",输出数组内容为["+", "+", "+"]
    完全符合预期需求。

可选:split实现方式(不推荐)

如果一定要用split逻辑实现,可以在切割后过滤空字符串:

String[] operandsArray = str.split("[^+\\-*/]");
// 过滤所有空串
operandsArray = Arrays.stream(operandsArray).filter(s -> !s.isEmpty()).toArray(String[]::new);

内容的提问来源于stack exchange,提问作者WhatTheWhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:06