3 Stimmen

Wie kann ich mehrere Elemente in einer Liste ersetzen?

Ich habe mehrere Zeichen in einer Liste hinzugefügt, um sie in einer Zeichenfolge zu ersetzen. Hier sind sie:

List<Character> list = new ArrayList<Character>();
list.add(',');
list.add('?');
list.add(',');
list.add(':');
list.add('-');
list.add('(');
list.add(')');
list.add(';');
list.add('/');

Ich möchte alle Vorkommen des Zeichens in der Liste in einer Zeichenfolge "s" ersetzen.

s.replaceAll(list, "");

Das geht natürlich nicht, denn list ist KEINE Zeichenkette. Aber was kann ich stattdessen tun?

EDIT wenn also

String s = "I am cool; not good!";

Ich möchte, dass die Liste erkennt, dass sie ";" und "!" enthält, und diese Zeichen im String s durch nichts ersetzt. Das Ergebnis wäre also:

"I am cool not good"

0 Stimmen

Sie können in der Liste nicht nach Strings suchen, da sie nur Zeichen enthält. Meinen Sie, dass Sie alle 's'-Zeichen aus der Liste entfernen müssen? Oder wenn Sie sagen, ersetzen Sie es, ersetzen Sie mit was ?

0 Stimmen

Ich möchte alle diese Zeichen in der Liste durch "" in der Zeichenfolge ersetzen.

1 Stimmen

Warum nicht statt einer Liste einen regulären Ausdruck verwenden?

5voto

Bohemian Punkte 386825

Anstatt eine List<Character> würde ich eine Regex verwenden:

s.replaceAll("[,?:();/-]","");

Wenn Sie Ihre Zeichen unbedingt in einer Liste definieren müssen, konvertieren Sie die Liste zuerst in eine solche Regex.

0 Stimmen

+1 - Ich war gerade dabei, das zu tippen! Verdammt, diese langsamen Finger.

1voto

Warum nicht einen regulären Ausdruck anstelle einer Liste verwenden? Andernfalls können Sie mit etwas wie stecken:

StringBuilder mySB = new StringBuilder(myString);
for (Character myChar : list) {
  mySB.replace(String.valueOf(myChar), "");
}

myString = mySB.toString();

1voto

Drew Nichols Punkte 49

Apache Commons überprüfen StringUtils.replaceEach((String text, String[] searchList, String[] replacementList)) können Sie eine Liste von Werten, nach denen gesucht werden soll, und eine Liste der zugehörigen Ersetzungen in einer einzigen Zeile angeben.

備考 : Dies führt zu einer IndexOutOfBoundsException, wenn die Längen der Such- und Ersatz-Arrays nicht gleich sind

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X