문자열의 시작 부분을 백 슬래시로 대체하려고합니다. 이상한 이유로 replaceAll 함수는 백 슬래시를 좋아하지 않습니다.자바 : replaceAll이 백 슬래시와 잘 작동하지 않습니까?
이 문제를 해결하려면 어떻게해야합니까?
감사합니다.
문자열의 시작 부분을 백 슬래시로 대체하려고합니다. 이상한 이유로 replaceAll 함수는 백 슬래시를 좋아하지 않습니다.자바 : replaceAll이 백 슬래시와 잘 작동하지 않습니까?
이 문제를 해결하려면 어떻게해야합니까?
감사합니다.
당신은 완전히 대체하기() 특수 문자로 취급 사용하는 패턴 클래스와 각 백 슬래시 (다시)을 두 번해야합니다 이것은 당신이 당신이 원하는 것을 얻기 위해 모든 백 슬래시를 두 번해야한다는 것을 의미 : 이스케이프 문자로
String jarPath = "\\\\xyz\\abc\\wtf\\lame\\";
jarPath = jarPath.replaceAll("\\\\\\\\xyz\\\\abc", "z:");
자바 문자열 취급 백 슬래시 그래서 완전히 대체하기가 보는 것은 : \\\\xyz\\abc
. 정규 표현식은 문자가되도록 그러나 완전히 대체하기는 이스케이프 문자로 백 슬래시를 취급 : 각각에 대해 \
\
x
y
z
\
a
b
c
replaceAll()은 백 슬래시를 이스케이프 문자로 사용하는 regexps를 사용합니다. 또한 Java String 구문은 백 슬래시를 이스케이프 문자로 사용합니다.
String jarPath = "\\\\xyz\\abc\\wtf\\lame\\";
jarPath = jarPath.replaceAll("\\\\\\\\xyz\\\\abc", "z:");
jarPath = jarPath.replaceAll("\\\\\\\\xyz\\\\abc", "z:");
를 '\'당신이 넣어해야 당신의 문자열에 '\\'는에 replaceAll
방법.
\
은 파일 분리자를위한 부적절한 선택이지만 MS-DOS에서 도입 한 변경 사항을 C 언어와 같은 이스케이프 문자로 사용하기 때문에 (이 포럼의 탈출구로도) 이스케이프 문자입니다. ..
\\host\path
문자열에서
\\\\host\\path
된다
\
탈출 있지만 정규식 다시 탈출해야한다는 것입니다
: P에게 \\\\\\\\host\\\\path
슬래시를 사용할 수있는 경우이있다 훨씬 더 간단
String jarPath = "//xyz/abc/wtf/lame/";
jarPath = jarPath.replaceAll("//xyz/abc", "z:");
그것은 예제 문자열이다. 실제 문자열은 Windows 공유 경로이므로 대체 할 수 없습니다. – thedp
replaceAll
은 정규 표현식을 입력 문자열로 기대하며,이 정규 표현식은 모든 인스턴스에서 일치되고 대체됩니다. 역 슬래시는 정규 표현식의 특수 이스케이프 문자이며, 일치 시키려면 이스케이프하기 위해 또 다른 백 슬래시가 필요합니다. 따라서 문자열을 "\"
과 일치 시키려면 ' "\"로 정규식이 필요합니다.
"\\\\\\\\xyz\\\\abc"
필요
"\\\\xyz\\abc"
문자열을 일치 시키려면 (각 소스
\
에 대한 추가
\
주의) :
이
String jarPath = "\\\\xyz\\abc\\wtf\\lame\\";
jarPath = jarPath.replaceAll("\\\\\\\\xyz\\\\abc", "z:");
당신은 단지 당신의 사용의 경우에 방법 대신 완전히 대체하기를 대체 사용할 수 있습니다. 내가 잘못 본 것이 아니라면 정규 표현식을 사용하지 않는다.
당신은 String
String jarPath = "\\\\xyz\\abc\\wtf\\lame\\";
jarPath = jarPath.replace("\\\\xyz\\abc", "z:");
에서 \\\\xyz\\abc
을 제거 할 수도 replace()
방법을 사용할 수있는 완전히 대체 방법을 사용하면 슬래시를 탈출해야 즉, 정규 표현식을 사용합니다. 귀하의 경우에는 대신 String.replace를 사용하는 것이 좋습니다.
String jarPath = "\\\\xyz\\abc\\wtf\\lame\\";
jarPath = jarPath.replace("\\\\xyz\\abc", "z:");
답변에있는 각 ''\ '에 대해'\\ ''를 mrkup에 넣어야합니다. – Rawling
oops :)이 (가) 업데이트되었습니다. 웃기는 나는 같은 일로 떨어졌다 ... – giorashc