2016-04-04 6 views
0

Ich habe eine Frage über das Entfernen unerwünschter Zeichen, oder in einem besseren Sinne, nur bestimmte behalten. Ich bin auf etwas namens String Literal gestoßen und ich verstehe nicht, wie es mir helfen kann, mein Ziel zu erreichen. Ich bin schon einmal darüber gestolpert, verstehe aber nicht, wie ich es benutzen soll.String literal und Entfernen unerwünschter Zeichen

Der String literal "[^ \ p {Alpha} - ']" verwendet werden, kann eine beliebige Zeichen übereinstimmen, die NICHT alphabetischen, einen Strich ist, oder Apostroph; Sie können dies nützlich bei der Verwendung von replaceAll()

Ich verstehe, was replaceAll() tut, aber auch andere Dinge, die ich nicht verstehen, sind die kleinen Codes wie [a-zA-Z], die Sie in es verwenden können, und wo man sucht, um mehr von ihnen zu finden. Ich möchte also ziemlich genau das tun, was in den Zitaten steht, und nur die Buchstaben und einige Interpunktionszeichen behalten.

+0

Dafür musste man reguläre Ausdrücke lernen..try google it –

+1

Ein "String Literal" ist alles in Anführungszeichen. Dieses spezielle Zeichenfolgenliteral wird als _regular expression_ oder kurz _regex_ verwendet.Google "Java Tutorial Regex" und Sie können herausfinden, was alle Codes bedeuten. Oder besuchen Sie http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html. – ajb

Antwort

0

Der Prozess, den Sie beschreiben, heißt Reguläre Ausdrücke oder kurz Regex. Es ist ein Tool, das in vielen Programmiersprachen (einschließlich Java) implementiert ist und es Ihnen ermöglicht, Strings mit einer Codezeile zu bearbeiten, die ansonsten komplizierter und ärgerlicher wäre.

Ich schlage diesen Link für eine ausführlichere tutorial vor.

0

replaceAll() verwendet Regexe.

Es gibt zu viel zu erklären in einem einzigen Beitrag, aber ich werde ein wenig erklären.

Hier ist ein regulärer Ausdruck: [^A-Za-z.?!]

  • [] bedeutet eine Zeichenklasse. Es wird eines der enthaltenen Zeichen (wie durch Meta-Zeichen modifiziert) übereinstimmen.
  • ^ Wenn dies das erste Zeichen in einer Char-Klasse ist, ist es ein Meta-Zeichen, das NICHT bedeutet.
  • A-Z bedeutet einen Bereich. Alles zwischen diesen ASCII/Unicode-Werten wird verglichen
  • Die ., ?, werden als Literale behandelt (in anderen Kontexten können sie Meta-Zeichen werden).

Also, die regex, wenn notierte und in einem replaceAll() wird alles ändern, die nicht alphabetisch ist, ., ? oder !.


Der zweite Parameter in replaceAll() nimmt auch einige spezielle Regex bezogene Zeichen, wie $1 nicht wörtlich $1 bedeuten.

Bevor Sie $1 verwenden, müssen Sie etwas über erweiterte Regex-Funktionen (Erfassungsgruppen) erfahren.

+0

setze ich die Regex in Anführungszeichen, wenn ich es in replaceAll() einfüge? – DurpBurger

+0

@DurpBurger Ja, und Sie müssten alle Zeichen entschlüsseln, die in Zeichenfolgen maskiert werden müssen. Es ist ein Schmerz, wenn die Regex \ zu ihrer eigenen Flucht braucht (was bedeutet, dass du der Flucht entkommen musst), also werde ich sie manchmal in einen Online-Tester einfügen, der alles automatisch ausblendet. – Laurel

Verwandte Themen