Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo escapar% en String.Format?

Estoy almacenando una consulta SQL en mi archivo strings.xml y quiero usar String.Format para construir la cadena final en el código. La instrucción SELECT utiliza un similar, algo así:

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

Para formatear que reemplazo 'algo' con% 1 $ s por lo que se convierte en:

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

Me escapo de las comillas simples con la barra invertida. Sin embargo, no puedo escapar del signo%.

¿Cómo puedo incluir una declaración similar en mi archivo strings.xml?

  • Sintaxis de Android destacando?
  • AsyncTask's doInBackground (Params ... params)
  • Explicación básica de Contexto en android
  • ¿Cuál es la notación de puntos entre los nombres de las clases y qué significa?
  • ¿Qué es diferente entre @ + id / android: list y @ id / android: list?
  • ¿Cuál es la sintaxis correcta para definir una actividad en el archivo de manifiesto
  • 4 Solutions collect form web for “Cómo escapar% en String.Format?”

    Para escapar % , necesitará duplicarlo: %% .

    Para complementar la solución anterior, utilice:

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

    Este es un reemplazo de regex más fuerte que no reemplazará %% que ya están duplicados en la entrada.

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

    No puedo creer que este no es un problema simple y resuelto ahora, pero bueno, aquí está mi puñalada

     (?:[^%]|^)(?:(%%)+|)(%)(?:[^%]) 

    Para desinfectar el mensaje antes de pasarlo a String.format, puede utilizar lo siguiente

     Pattern p = Pattern.compile("(?:[^%]|^)(?:(%%)+|)(%)(?:[^%])"); Matcher m1 = p.matcher(log); StringBuffer buf = new StringBuffer(); while (m1.find()) m1.appendReplacement(buf, log.substring(m1.start(), m1.start(2)) + "%%" + log.substring(m1.end(2), m1.end())); // Return the sanitised message String escapedString = m1.appendTail(buf).toString(); 

    Tenga en cuenta que esto funciona con cualquier número de caracteres de formato, por lo que reemplazará% con %%, %%% con %%%%, %%%%% con %%%%%% etc.

    Dejará solo caracteres ya escapados (por ejemplo, %%, %%%%, etc.)

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.