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

Java中如何按+、-操作符分割字符串?

Java分割含"+""-"的字符串提取项

要实现将类似"2x^3+3x-8"这样的字符串分割为['2x^3', '3x', '8'],可以用以下两种实用方法:

方法一:分割后过滤空元素

直接以+和-作为分隔符分割字符串,再过滤掉可能出现的空字符串(比如字符串以符号开头时会产生空元素):

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class SplitExample {
    public static void main(String[] args) {
        String str1 = "2x^3+3x-8";
        // 分割字符串
        String[] rawTerms = str1.split("[-+]");
        
        // 方式1:循环过滤
        List<String> result1 = new ArrayList<>();
        for (String term : rawTerms) {
            if (!term.isEmpty()) {
                result1.add(term);
            }
        }
        System.out.println(result1); // 输出: [2x^3, 3x, 8]
        
        // 方式2:Stream流过滤
        List<String> result2 = Arrays.stream(rawTerms)
                                     .filter(s -> !s.isEmpty())
                                     .collect(Collectors.toList());
        System.out.println(result2); // 输出: [2x^3, 3x, 8]
    }
}

方法二:正则匹配提取项

通过正则表达式直接匹配所有非+、-的连续字符,提取每个项的内容:

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

public class MatchExample {
    public static void main(String[] args) {
        String str1 = "2x^3+3x-8";
        // 匹配一个或多个非+、-的字符
        Pattern pattern = Pattern.compile("[^+-]+");
        Matcher matcher = pattern.matcher(str1);
        
        List<String> result = new ArrayList<>();
        while (matcher.find()) {
            result.add(matcher.group());
        }
        System.out.println(result); // 输出: [2x^3, 3x, 8]
    }
}

两种方法都能满足需求:如果你的字符串大概率不会以符号开头,方法一更简洁;如果需要兼容开头带符号的场景,两种方法都能处理,方法二的逻辑更直观,直接提取目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:40:28