2011-09-23 11 views
7

Ho provato a suddividere la stringa in array e sostituire \ con \\, ma non ho potuto farlo, inoltre ho provato String.replaceTutto qualcosa come questo ("\","\\");. Voglio fornire un percorso per JNI e si legge solo in questo modo. Qualcuno mi può aiutare su questo per favore. Grazie.Come sostituire "" con "\" in java

risposta

22

In questo caso non utilizzare String.replaceAll, che è specificato in termini di espressioni regolari, il che significa che è necessario eseguire ancora più operazioni di escape. Questo dovrebbe andare bene:

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

Si noti che le barre inverse sono raddoppiati a causa di essere in Java stringhe letterali - in modo che i effettivi stringhe coinvolte qui sono "backslash singolo" e "doppia barra rovesciata" - non doppie e quadruple.

replace funziona su stringhe semplici, senza regex.

+7

Dannazione! Skeeted di nuovo! –

+0

Questo aggiunge quattro barre come questa \\\\ per me –

+0

@Jamesandresakis: È difficile dire cosa stai facendo male con così poche informazioni. La mia ipotesi è che tu stia osservando la stringa in un debugger, dove potrebbe essere sfuggita per te. –

1

Voglio fornire un percorso a JNI e si legge solo in questo modo.

Non è giusto. Hai solo bisogno di doppi backslash in stringhe letterali che dichiari in un linguaggio di programmazione. Non devi mai fare questa sostituzione in fase di esecuzione. Devi ripensare al motivo per cui lo stai facendo.

2

Si potrebbe utilizzare replaceAll:

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

p_p Capisco perché Jon Skeet ha detto di non usare replaceAll ... Oh Java ... – yarbelk

Problemi correlati