Nope, wenn dann: "en, de, zh-CN, uk, zh, zh-TW, sv".replaceAll("zh,",""), sonst löscht du zu viel. Aber es geht wohl auch um das auffinden von solchen duplikaten. Da wirst du im worst-case den String durchgehen müssen und schauen, was vorhanden ist und was nicht. Ich hab da noch eine Idee wie man es mittels Regex finden könnte, aber dazu muss ich selber erstmal ein wenig basteln.
Tschuldigung, Tschuldigung! Hatte nicht richtig gelesen…
Aber ich glaube wenn du die Aufgabe von der Schule bekommen hast, dann sollst du es selber machen…
Also wenn die mit dem Bindestrich und der 2. Kennung erhalten bleiben sollen, wird allerdings weniger trivial. Dann würde ich mit 'nem anderen Regex suchen (Bindestrich ausschliessen). Leider habe ich mich in den letzten Jahren nur noch wenig bis gar nicht mehr mit Regex befasst, sodass ich kaum weis, wie ein entsprechender aussehen müsste.
Wenn’s um Länderkennungen geht, würde ich allerdings auch die weniger spezifizierten drin lassen und eine Standardspezifikation bestimmen.
[QUOTE=Madlip]auf jeden Fall gute Lösung, nur wenn der String wie folgt lautet: “en, de, zh-CN, uk, zh-TW, sv, zh”
hab ich dann doch wieder ein Problem[/QUOTE]
Da hast du recht, sorry. Kurzer Ansatz:
String[] elements = toFilter.split(",");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < elements.length; i++) {
if (!elements**.trim().equals(filter)) {
if (i > 0) {
builder.append(",");
}
builder.append(elements**);
}
}
return builder.toString();
}```
Noch nicht perfekt, scheint aber zu funktionieren:
Matcher matcher = Pattern.compile("([a-z]{2})(?<!\\\\-)").matcher(search);
while(matcher.find()) {
String found = matcher.group(1);
if(search.indexOf(found + "-") != -1) {
search = search.replaceAll("\\s?" +found + "(?!-),?", "");
}
}
System.out.println(search);```
Ausgabe: `en, de, zh-CN, uk, zh-TW, sv-TE,`
Der oben stehende Code findet jetzt z.B. selbstständig das unnötig vorkommende `zh` und schmeißt es raus. Dazu wählt es zuerst alle Elemente aus, die kein folgendes `-` besitzen (also im Beispiel oben: de, en, zh, sv, uk). Danach prüft er ob eine spezifikation davon vorkommt (`if(search.indexOf(found+"-") != -1) {`. Trifft das zu, so ersetzt er den entsprechenden Eintrag und versucht dabei noch die String-formatierung ein wenig beizubehalten (also unnötiges leerzeichen und Komma entfernen, sofern vorhanden)
[QUOTE=Madlip]zh = China, sind auch die einzigen mit Zusätzen.[/QUOTE]In deinem Beispiel vllt. Sonst han nämlich jede Länderkennung einen Zusatz, welche am Beispiel England ungefähr so “en-EN” oder Deutschland so “de-DE” aussieht.
edit: Naja… egal… wenn wir keine Tomaten hätten, würden wir verhungern. :lol: