Chcę zmienić ukośnik odwrotny w ciągu znaków, aby podwójny ukośnik odwrotny.Zamień ukośnik odwrotny z podwójnym ukośnikiem odwrotnym
mam
String path = "C:\Program Files\Text.txt";
i chcę go zmienić na
"C:\\Program Files\\Text.txt"
Chcę zmienić ukośnik odwrotny w ciągu znaków, aby podwójny ukośnik odwrotny.Zamień ukośnik odwrotny z podwójnym ukośnikiem odwrotnym
mam
String path = "C:\Program Files\Text.txt";
i chcę go zmienić na
"C:\\Program Files\\Text.txt"
replaceAll
używa wyrażenia regularnego, a ponieważ nie trzeba używać regex tutaj wystarczy użyć
path = path.replace("\\", "\\\\");
\
jest specjalny w literałach ciągów. Na przykład może on być stosowany do
\t
, separatory linii \n
\r
,\uXXXX
(gdzie X
jest wartość szesnastkowa i XXXX
reprezentuje pozycję znaku w Unicode Stół).Aby uciec przed nim (i utworzyć znak \
) musimy przed nim dodać jeszcze jedną \
.
Tak więc literał znaków reprezentujących znak \
wygląda jak "\\"
. Łańcuch reprezentujący dwie znaki \
wygląda jak "\\\\"
.
Dobre wyjaśnienie. – misty
Korzystanie String#replace()
String s= "C:\\Program Files\\Text.text";
System.out.println(s.replace("\\", "\\\\"));
Otrzymuję błąd jako "wyjątek w wątku" AWT-EventQueue-0 "java.util.regex.PatternSyntaxException: nieoczekiwany błąd wewnętrzny w pobliżu indeksu 1" – user2060390
@ user2060390 prawdopodobnie używasz replaceAll. tak naprawdę nie potrzebujesz rozwiązania regex tutaj po prostu użyj replace(), który oczekuje ciągu i zastępczego łańcucha. – PermGenError
'System.out.println (s.replaceAll (" \\\\ "," \\\\\\\\ "));' działałoby, jeśli chcesz użyć 'replaceAll'. – Dukeling
nie to mówi błąd składni? –
Zawsze używaj '/' zamiast \\ dla ścieżek systemu plików, ponieważ '/' jest niezależne od systemu operacyjnego. –
Nie masz (1), ponieważ nie kompiluje się: dlatego nie masz problemu z konwersją do (2). Najprawdopodobniej masz ciąg znaków, który zawiera pojedyncze ukośniki odwrotne, pochodzące nie z literału, ale od użytkownika, który jest już użyteczny, jak jest. Podwójne ukośniki odwrotne są wymagane tylko w przypadku literałów łańcuchowych i są konwertowane na pojedyncze przez kompilator. Nie masz tego problemu. To nie jest prawdziwe pytanie. – EJP