title: Escape % symbol in a java string to apply String.format
body: <p>In my project (Java/Play framework) I have an error handling routing that checks the response from a web service if the response is an error code, we display the corresponding error message saying what was the problem with the user input, the service checks user input validity.</p>
  
  <p>When the user enter an % symbol, this logic breaks because the error display logic uses </p>
  
  <pre><code>String.format(message, messageArgs);
  </code></pre>
  
  <p>Which interpolates the messageArgs intro the message String where it finds an %, and if the messageArgs contains an % as well I get an exception.</p>
  
  <p>I need to sanitize, escape or otherwise remove the % from the user inputs, before displaying the message.</p>
  
  <p>message: The requested email address %s is invalid 
  messageArgs: orlybg%@gmail.com</p>
  
  <p>Any advice on how to do this in Java in the simplest, shortest way?</p>
  
  <p>here's a part of the error log</p>
  
  <pre><code> java.util.UnknownFormatConversionException: Conversion = 'i'
     at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646)
     at java.util.Formatter$FormatSpecifier.&lt;init&gt;(Formatter.java:2675)
     at java.util.Formatter.parse(Formatter.java:2528)
     at java.util.Formatter.format(Formatter.java:2469)
     at java.util.Formatter.format(Formatter.java:2423)
     at java.lang.String.format(String.java:2797)
     at controllers.api.PublicAPI.renderAPIError(PublicAPI.java:176)
     at controllers.api.DeviceAPI.setEmailAddress(DeviceAPI.java:736)
     at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
     at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
     at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
     at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
     at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
     at Invocation.HTTP Request(Play!)
  </code></pre>
  
  <p>Thanks!</p>