Eu tenho por exemplo esse array
String[] mailToCc = {"[email protected]; [email protected];", "[email protected]"};
O primeiro elemento são 2 e-mails com ponto e vírgula no final. O que eu quero é separar esses 2 (eles podem ser encontrados em qualquer elemento do array, nem sempre o primeiro) e adicioná-los ao array original como novos elementos. É assim que deveria ser
["[email protected]", "[email protected]", "[email protected]"];
Esta é minha tentativa
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));
}
}
Mas em vez de conseguir o que preciso, consigo esse resultado
["[email protected]; [email protected];", "[email protected]", "[email protected]", "[email protected]"]
O problema é que você está adicionando o elemento original à
updatedMailToCc
lista, independentemente de ele conter ponto e vírgula ou não, por isso você está vendo a string original com ponto e vírgula no resultado.Para corrigir isso, você deve apenas adicionar os elementos divididos à
updatedMailToCc
lista e pular a adição do elemento original.O problema é que você adiciona o elemento base e sua decomposição, duplicando coisas que possuem ponto e vírgula
Não se preocupe em verificar a quantidade de peças que você tem, adicione todas sempre, mas não o elemento base. Altere também um pouco o regex para evitar manter espaço em torno de seus e-mails
Outra maneira seria adicionar o elemento base condicionalmente