web-dev-qa-db-de.com

Wie% in String.Format zu entkommen?

Ich speichere eine SQL-Abfrage in meiner Datei "strings.xml" und möchte mit String.Format Die endgültige Zeichenfolge im Code erstellen. Die SELECT -Anweisung verwendet ein ähnliches wie das folgende:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'

Um das zu formatieren, ersetze ich 'irgendetwas' durch% 1 $ s, so dass es wird:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'

Ich entkomme den einfachen Anführungszeichen mit dem Backslash. Ich kann mich dem% -Zeichen jedoch nicht entziehen.

Wie kann ich eine like-Anweisung in meine Datei strings.xml einfügen?

384
Matthew

Fliehen %, du musst es verdoppeln: %%.

816
limc

Verwenden Sie zur Ergänzung der oben angegebenen Lösung Folgendes:

str = str.replace("%", "%%");
11
Cavaleiro

Dies ist eine stärkere Regex-Ersetzung, die %% nicht ersetzt, die bereits in der Eingabe verdoppelt wurden.

str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");
0
Toilal