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:

  • Adición de vista personalizada a una barra de herramientas
  • Cómo ocultar la barra de acción para el fragmento?
  • Android: Intent.ACTION_SEND con EXTRA_STREAM no adjunta ninguna imagen al elegir la aplicación de Gmail en htc Hero
  • Cómo crear gradiente de fondo animado como Instagram app?
  • Cómo desplazar tablayout programatically - Android
  • Cómo Reverse Fragment animaciones en BackStack?
  •  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?

  • ¿Cómo se bloquea la orientación de la aplicación (horizontal o vertical)?
  • RuntimeException mientras utiliza nuevo TextInputLayout de la biblioteca de diseño de soporte
  • ViewPager + Adaptador en Fragmento => laggy swiping
  • Cómo evitar el "permiso EACCES negado" en SDCARD con KITKAT 4.4.2 Versión. Nueva política de google
  • Habilitar la compatibilidad con C ++ 11 en Android
  • Saber si la aplicación recibió la notificación desde el lado del servidor
  • 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.