2011-09-23 16 views
7

Intenté romper la cadena en matrices y reemplazar \ con \\, pero no pude hacerlo, también probé String.replaceAll algo así ("\","\\");. Quiero proporcionar una ruta a JNI y solo se lee de esta manera. ¿Alguien puede ayudarme en esto por favor? Gracias.Cómo reemplazar "" con "\" en java

Respuesta

22

No use String.replaceAll en este caso, eso se especifica en términos de expresiones regulares, lo que significa que necesitará aún más escapes. Esto debe estar bien:

String escaped = original.replace("\\", "\\\\"); 

Tenga en cuenta que las barras invertidas son dos debido a que en los literales de cadena de Java - por lo que los reales cadenas involucradas aquí son "barra invertida sola" y "doble barra invertida" - no dobles y cuádruples.

replace funciona en cadenas simples - no hay expresiones regulares involucradas.

+7

Maldición! Skeeted de nuevo! –

+0

Esto agrega cuatro barras diagonales como esta \\\\ para mí –

+0

@Jamesandresakis: Es difícil decir lo que está haciendo mal con tan poca información. Mi suposición es que estás mirando la cadena en un depurador, donde puede escapársela. –

1

Quiero proporcionar una ruta a JNI y solo se lee de esta manera.

Eso no está bien. Solo necesita barras invertidas dobles en cadenas literales que declare en un lenguaje de programación. Nunca tienes que hacer esta sustitución en tiempo de ejecución. Necesitas repensar por qué estás haciendo esto.

2

Usted podría utilizar replaceAll:

String escaped = original.replaceAll("\\\\", "\\\\\\\\"); 
+0

p_p Veo por qué Jon Skeet dijo que no use replaceAll ... Oh Java ... – yarbelk

Cuestiones relacionadas