Ok, vous pourriez dire que c'est un article en double, mais c'est différent.Java - Analyse de chaîne ou split() bug en utilisant plusieurs délimiteurs
Je travaille sur un programme qui travaille sur une sorte de suppression des délimiteurs spécifiés par l'utilisateur. Mon programme fonctionne si le délimiteur n'est qu'un seul caractère (spécial ou non). Toutefois, si l'entrée utilisateur est une chaîne, elle supprime tous les caractères du délimiteur de la chaîne de message.
ex. Chaîne message = "ab \ nc [d] e {fMardk1g (h) i} j"; sortie sera: bcefghij mais le résultat attendu est abcdefghij
Je suis nouveau en utilisant la classe modèle, donc je ne sais pas où réside le problème.
Voici le code en question (je l'ai mis dans une classe d'essai afin que je puisse isoler le problème):
importation java.util.regex.Pattern;
public class ParsingTest {
public static void main(String[] args) {
String[] delimiters = { "Mardk1", "\n", "[", "]", "{", "}", "(", ")" };
StringBuilder regexp = new StringBuilder("");
regexp.append("[");
for(String s : delimiters) {
regexp.append("[");
regexp.append(Pattern.quote(s));
regexp.append("]");
}
regexp.append("]");
String message = "ab\nc[d]e{fMardk1g(h)i}j";
StringBuilder result = new StringBuilder("");
String[] a = message.split(regexp.toString());
for(String string : a) {
result.append(string);
}
System.out.println(result);
for(String str: a) System.out.print(str);
System.out.println();
}
}
Votre regex généré contiendra '[Mardk1]' qui délimitent par l'un quelconque des caractères 'M, a, r, d, k ou 1 ', et c'est pourquoi vous ne voyez pas de caractère' a' dans votre sortie. – rodion