Desidero modificare la barra rovesciata in una stringa per il doppio backslash.Sostituire la barra rovesciata con doppia barra rovesciata
ho
String path = "C:\Program Files\Text.txt";
e voglio cambiarlo in
"C:\\Program Files\\Text.txt"
Desidero modificare la barra rovesciata in una stringa per il doppio backslash.Sostituire la barra rovesciata con doppia barra rovesciata
ho
String path = "C:\Program Files\Text.txt";
e voglio cambiarlo in
"C:\\Program Files\\Text.txt"
replaceAll
sta usando espressioni regolari, e dal momento che non c'è bisogno di usare regex qui semplicemente uso
path = path.replace("\\", "\\\\");
\
è speciale in stringhe letterali. Ad esempio può essere utilizzato per
\t
, separatori di linea \n
\r
,\uXXXX
(dove X
è il valore esadecimale e XXXX
rappresenta la posizione del carattere in Unicode Tavolo).di sfuggire (e creare \
carattere) abbiamo bisogno di aggiungere un altro \
prima di esso.
Quindi la stringa letterale che rappresenta il carattere \
si presenta come "\\"
. La stringa che rappresenta due caratteri \
assomiglia a "\\\\"
.
Buona spiegazione. – misty
Utilizzando String#replace()
String s= "C:\\Program Files\\Text.text";
System.out.println(s.replace("\\", "\\\\"));
Ricevo errore come "Eccezione nella discussione" AWT-EventQueue-0 "java.util.regex.PatternSyntaxException: Errore interno imprevisto vicino all'indice 1" – user2060390
@ user2060390 probabilmente si sta utilizzando replaceAll. non hai davvero bisogno di una soluzione regex qui basta usare replace() che si aspetta una stringa e una stringa di sostituzione. – PermGenError
'System.out.println (s.replaceAll (" \\\\ "," \\\\\\\\\ "));' funzionerebbe se si desidera utilizzare 'replaceAll'. – Dukeling
non fa che dire errore di sintassi? –
Usa sempre '/' invece di \\ per i percorsi del file system, poiché '/' è indipendente dal sistema operativo. –
Non hai (1), perché non si compila: quindi non hai il problema di convertirlo in (2). Quello che probabilmente hai è una stringa che contiene singoli backslash, derivati non da un letterale, ma da parte dell'utente, che è già utilizzabile così com'è. I doppi backslash sono richiesti solo per i letterali stringa e vengono convertiti in singolo dal compilatore. Non hai questo problema. Non è una vera domanda. – EJP