2010-12-01 16 views
5

Ich weiß, dass es eine ganze Reihe von Fragen dazu gibt, aber ich muss noch eine Lösung finden, die für meine Situation geeignet ist. Ich weiß von string.trim() und es hat keine Wirkung. Nachdem ich online recherchiert habe und eine Welt des Hasses für string.trim() entdeckt habe, merke ich, dass der Whitespace-Charakter, den ich entfernen möchte, außerhalb des Bereichs liegen muss, den .trim() bietet.Trimmen von Leerzeichen aus einem String in Java

Ich benutze einige Regex, die ich nicht vollständig verstehe, um die Zeichenfolge von Sonderzeichen ohne '=' und ',' und alle Leerzeichen außer wenn es unmittelbar nach dem ','.

Allerdings möchte ich jetzt alle Leerzeichen aus der Zeichenfolge vollständig entfernen. Irgendwelche Ideen, wie man die Regex, die ich benutze, um dies zu erreichen, würde geschätzt werden. Noch einmal, was ich will ist '=' und ',' zusammen mit Ziffern und Buchstaben zu bleiben. Alle Leerzeichen und andere Sonderzeichen sollten entfernt werden.

Hier ist der Code so weit:

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "[^=,\\da-zA-Z\\s]|(?<!,)\\s", ""); 
      return filteredArgs; 
} 

Antwort

5

Zeit einen regulären Ausdruck zu lernen!

Siehe Pattern und verschiedene Tutorials für reguläre Ausdrücke wie Lesson: Regular Expressions.

[^=,\\da-zA-Z\\s] 

Jener Teil sagt keine Übereinstimmung (^) die Zeichen: =, ,, Ziffern (\ d), A-Z (A-Z) oder Leerzeichen (\ s). Wahrscheinlich möchten Sie jedoch, dass es jetzt mit Leerzeichen übereinstimmt (da kein zweites Nachkomma-Teil vorhanden ist). Also:

argsToBeFiltered.replaceAll("[^=,\\da-zA-Z]", ""); 
+3

Das ist nicht ganz richtig. '\\ s' (oder' \ s' nach dem String-Escaping) ist mehr als nur Leerzeichen, sondern beinhaltet auch vertikale und horizontale Tabs, Wagenrücklauf/Zeilenvorschub, etc ... – Powerlord

+0

Thankyouthankyouthankyouthankyouthankyou !!!!! – Frank

+0

@R. Danke, Danke. Korrigiert. –

1

Versuchen Sie folgendes: -

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "\\w+"); 
      return filteredArgs; 
} 
+0

Danke CoolBeans - pst hat es aber für mich genagelt. Prost für das Interesse! – Frank

Verwandte Themen