例如我有这个数组
String[] mailToCc = {"[email protected]; [email protected];", "[email protected]"};
第一个元素是 2 封邮件,末尾有分号。我想要的是将这两个元素分开(它们可以在数组的任何元素上找到,并不总是第一个)并将它们像新元素一样添加到原始数组中。它应该是这样的
["[email protected]", "[email protected]", "[email protected]"];
这是我的尝试
import java.util.ArrayList;
import java.util.Arrays;
public class Main
{
public static void main(String[] args) {
ArrayList<String> updatedMailToCc = new ArrayList<>();
String[] mailToCc = {"[email protected]; [email protected];", "[email protected]"};
for (String element : mailToCc) {
String[] splitElements = element.split(";");
// Add the original element itself
updatedMailToCc.add(element);
// If it could be split, add each part as a new element
if (splitElements.length > 1) {
updatedMailToCc.addAll(Arrays.asList(splitElements));
}
}
// Convert the ArrayList back to an array if needed
mailToCc = updatedMailToCc.toArray(new String[0]);
// Print the updated array
System.out.println("resultado =" + Arrays.toString(mailToCc));
}
}
但我没有得到我需要的东西,而是得到了这个结果
["[email protected]; [email protected];", "[email protected]", "[email protected]", "[email protected]"]
问题是,您将原始元素添加到列表中,
updatedMailToCc
无论它是否包含分号,这就是您在结果中看到带有分号的原始字符串的原因。要解决此问题,您应该只将拆分元素添加到列表中
updatedMailToCc
,并跳过添加原始元素。问题是您都添加了基本元素及其分解,因此您重复了带有分号的内容
不必费心检查您拥有的零件数量,每次都添加它们,但不添加基本元素。还要更改一下正则表达式以避免在电子邮件周围保留空间
另一种方法是有条件地添加基本元素