web-dev-qa-db-fra.com

Comment remplacer "\" par "\\" en java

J'ai essayé de casser la chaîne en tableaux et de remplacer \ par \\, mais je n'ai pas pu le faire. J'ai également essayé String.replaceAll, ce qui ressemble à ceci ("\","\\");. Je veux fournir un chemin à JNI et il lit seulement de cette façon. Quelqu'un peut-il m'aider à ce sujet s'il vous plaît. Je vous remercie. 

10
David Prun

N'utilisez pas String.replaceAll dans ce cas, car cela est spécifié en termes d'expressions régulières, ce qui signifie que vous auriez encore besoin de s'échapper. Cela devrait être bon:

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

Notez que les barres obliques inverses sont doublées car elles sont dans des littéraux de chaîne Java - les chaînes réelles impliquées ici sont donc des "barres obliques inversées simples" et des "barres obliques inversées doubles" - et non des chaînes doubles et quadruples.

replace fonctionne sur des chaînes simples - pas de regex impliqués.

25
Jon Skeet

Vous pouvez utiliser replaceAll:

String escaped = original.replaceAll("\\\\", "\\\\\\\\");
2
Bibin Mathew

Je veux fournir un chemin à JNI et il lit seulement de cette façon.

Ce n'est pas juste. Vous n'avez besoin que de doubles barres obliques inverses dans des chaînes littérales que vous déclarez dans un langage de programmation. Vous ne devez jamais faire cette substitution au moment de l'exécution. Vous devez repenser pourquoi vous faites cela.

1
user207421