How to escape % in String.Format?

180,492

Solution 1

To escape %, you will need to double it up: %%.

Solution 2

To complement the previous stated solution, use:

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

Solution 3

This is a stronger regex replace that won't replace %% that are already doubled in the input.

str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");
Share:
180,492
Matthew
Author by

Matthew

Updated on July 28, 2022

Comments

  • Matthew
    Matthew almost 2 years

    I am storing a SQL query in my strings.xml file and I want to use String.Format to build the final string in code. The SELECT statement uses a like, something like this:

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

    In order to format that I replace 'something' with %1$s so it becomes:

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

    I escape the single quotes with the backslash. However I am not able to escape the % sign.

    How can I include a like statement in my strings.xml file?