Ich habe begonnen, die .match(Regex)
Methode in meinem Java-Programm zu verwenden, aber für den Moment verwende ich nur eine Zeichenfolge (String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");
das ist, was ich bisher als Beispiel habe). Ich weiß aber, ich kann eine tatsächliche Regex (Regex pattern = new Regex() & the Pattern class
dann kompilieren Sie es (?) Einige wie).Regex mit einer Zeichenfolge oder nicht mit einer Zeichenfolge regex?
Gibt es einen Vorteil, Regex als eine Klasse und nicht nur eine Zeichenfolge in Java zu verwenden? Ich bin ziemlich daran gewöhnt, Skripte zu bashlen, und Regexes sind nur "Strings" im weitesten Sinn, und es gibt keine Fähigkeit/Notwendigkeit für eine separate Klasse, also kämpfe ich darum, wo es einen gibt.
Schreiben Sie niemals 'new String (" ... ");'. Verwenden Sie stattdessen '" ... "' stattdessen: 'String regexString =". * ";'. Es ist unnötig und ineffizient, explizit ein neues "String" -Objekt zu erstellen. – Jesper
Wird ein Objekt nicht erstellt, wenn ich das trotzdem mache? Was passiert, wenn ich mehrere separate Strings habe? – Pureferret
Ja, wenn Sie nur ein Literal verwenden, zum Beispiel '". * "', Wird ein 'String' Objekt erzeugt. Wenn Sie aber 'new String (". * ")' Machen, wird ein zweites 'String'-Objekt erzeugt, das den Inhalt der Literal-Zeichenfolge kopiert, was unnötig ist. Zeichenfolgen sind in Java unveränderlich. Java verfügt über einen String-Pooling-Mechanismus. Wenn Sie also dasselbe String-Literal mehrmals verwenden, gibt es nur ein "String" -Objekt, das gemeinsam genutzt wird. – Jesper