Je suis en train d'utiliser la fonction remplacer pour remplacer « ( « »," » et « ") » de la chaîne ci-dessous -
String foo = "('UK', 'IT', 'DE')";
Je suis en train d'utiliser le code ci-dessous pour effectuer cette opération -
(foo.contains("('")?foo.replaceAll("('", ""):foo.replace("'",""))?foo.replaceAll("')",""):foo
mais son défaut comme -
java.util.regex.PatternSyntaxException: Unclosed group near index 2
Est-ce que je manque quelque chose ici?
replaceAll
prend une expression régulière comme modèle de recherche. Depuis (
est un caractère spécial dans les expressions régulières, il faut être échappé: '\\('
. De plus, il n'y a pas besoin pour le contains
test:
final String bar = foo.replaceAll("\\('", "") …
Enfin, vous pouvez combiner tous vos remplacements dans une expression régulière:
final String bar = foo.replaceAll("\\(?'([^']*)'\\)?", "$1");
// Output: UK, IT, DE
Cela remplacera chaque occurrence d'une seule pièce citée dans votre chaîne avec son contenu sans les guillemets, et il permettra (et défausse) entourant l'ouverture et la fermeture entre parenthèses.