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

如何将数组中含分号的元素拆分并作为新元素加入原数组

问题:拆分数组中的邮箱地址并整理格式

我有如下字符串数组:

String[] mailToCc = {"chrisdgc794@gmail.com; christian.gamba@cast.com.py;", "notiene@gmail.com"};

第一个元素包含2个邮箱地址,末尾还有分号。需要将数组中任意位置的这类含多个邮箱的元素拆分,把拆分后的有效邮箱作为新元素加入数组,最终期望结果为:

["chrisdgc794@gmail.com", "christian.gamba@cast.com.py", "notiene@gmail.com"];

尝试的代码

import java.util.ArrayList;

import java.util.Arrays;
public class Main
{
    public static void main(String[] args) {
        ArrayList<String> updatedMailToCc = new ArrayList<>();
        String[] mailToCc = {"chrisdgc794@gmail.com; christian.gamba@cast.com.py;", "notiene@gmail.com"};

        for (String element : mailToCc) {
            String[] splitElements = element.split(";");

            // 添加原始元素本身
            updatedMailToCc.add(element);

            // 如果能拆分,就把每个部分作为新元素加入
            if (splitElements.length > 1) {
                 updatedMailToCc.addAll(Arrays.asList(splitElements));
            }
       }

       // 按需将ArrayList转换回数组
       mailToCc = updatedMailToCc.toArray(new String[0]);

       // 打印更新后的数组
       System.out.println("resultado =" + Arrays.toString(mailToCc));
    }
}

问题所在

运行后结果不符合预期,得到的是:

["chrisdgc794@gmail.com; christian.gamba@cast.com.py;", "chrisdgc794@gmail.com",  "christian.gamba@cast.com.py", "notiene@gmail.com"]

错误根源:

  1. 代码错误地将未拆分的原始元素加入了结果列表,导致保留了冗余的长字符串
  2. 直接按分号拆分会让拆分后的邮箱带前后空格,且末尾分号会产生空字符串元素

修正后的代码

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> updatedMailToCc = new ArrayList<>();
        String[] mailToCc = {"chrisdgc794@gmail.com; christian.gamba@cast.com.py;", "notiene@gmail.com"};

        for (String element : mailToCc) {
            // 按分号拆分,同时自动去除分号前后的空格
            String[] splitElements = element.split("\\s*;\\s*");
            for (String part : splitElements) {
                // 过滤拆分后产生的空字符串
                if (!part.isEmpty()) {
                    updatedMailToCc.add(part);
                }
            }
        }

        // 将列表转换为数组
        mailToCc = updatedMailToCc.toArray(new String[0]);

        // 打印最终结果
        System.out.println("resultado =" + Arrays.toString(mailToCc));
    }
}

关键说明

  • 使用\\s*;\\s*作为拆分规则:\\s*匹配任意数量的空白字符,确保拆分后的邮箱地址不带前后空格
  • 遍历拆分后的每个部分,通过!part.isEmpty()过滤掉末尾分号产生的空字符串
  • 不再添加原始元素,直接将拆分后的有效邮箱加入结果列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:16