2016-06-25 26 views
0

ich ein Problem mit einer Zeile Code haben, der so geht:Android "()" nicht als String behandelt

string = string.replaceAll("sin()", ""); 

Wie Sie sehen können, in einer Zeichenfolge, die alle "sin()" Notwendigkeit durch "" ersetzt werden. Aber das Problem ist, dass() nicht als String behandelt wird und diese Codezeile "sin()" durch "()" ersetzt. Darüber hinaus meldet Android Studio eine Warnung über die leere Gruppe(). Ich habe versucht, dies mit Escape-Charakter zu lösen, aber das funktioniert nicht. Würde der folgende Code zufällig funktionieren?

String compare = "sin()"; 
string = string.replaceAll(compare, ""); 

Antwort

4

replaceAll ‚s erste Parameter ist ein regulärer Ausdruck, von denen ( und ) sind Sonderzeichen. Sie würden stattdessen

string = string.replaceAll("sin\\(\\)", ""); 

Beachten Sie die Verwendung von \\ verwenden müssen - \ ist eigentlich ein Sonderzeichen in Java-Strings, so dass Sie zuerst die \ unter Verwendung \\ entkommen muss.

1
String z = "sin() is equal sin()"; 
    Log.d("TEST",z); 
    z = z.replaceAll("sin\\(\\)", ""); 
    Log.d("TEST",z); 

gibt folgende Ausgabe:

sin() is equal sin() 
is equal 
0

Sie benötigen ( und ) weil sein ein besonderes Charaters Sie So "\\" Beispiel verwenden müssen, trennen:

string = string.replaceAll("sin\\(\\)", ""); 
Verwandte Themen