Javascript에서 이중 백슬래시를 단일 백슬래시로 바꾸기
다음과 같은 문제가 있습니다.
서버에 대한 AJAX 요청을 실행하는 스크립트가 있으면 서버가 반환됩니다.C:\backup\
시사회에서하지만, 그 반응은."C:\\backup\\"
큰 문제는 아닙니다. 더블 슬래시를 싱글 슬래시로 교체하려고 생각했기 때문입니다.여기 스택에서 찾아봤는데, 백슬래시 하나를 더블로 교체하는 방법만 찾았는데, 반대로 필요해요.
누가 이 문제를 도와줄 수 있습니까?
이렇게 하면 됩니다."C:\\backup\\".replace(/\\\\/g, '\\')
정규식에서, 단일\
로 탈출해야 합니다.\\
그리고 그 대신에\
또한.
[edit 2021] 템플릿 리터럴을 사용하는 것이 더 나을 수 있습니다.
console.log(`original solution ${"C:\\backup\\".replace(/\\\\/g, '\\')}`)
// a template literal will automagically replace \\ with \
console.log(`template string without further ado ${`C:\\backup\\`}`);
// but if they are escaped themselves
console.log(`Double escaped ${`C:\\\\backup\\\\`.replace(/\\{2,}/g, '\\')}`);
// multiple escaped
console.log(`multiple escaped ${`C:\\\\\\\\backup\\\\`
.replace(/\\{2,}/g, '\\')}`);
// don't want to replace the last \\
console.log(`not the last ${`C:\\\\\\backup\\\\`
.replace(/\\{2,}([^\\{2,}$])/g, (a ,b) => a.slice(0,1) + b)}` );
// don't want to replace the first \\
console.log(`not the first ${`C:\\\\backup\\`.replace(/\\[^\\]$/g, '\\')}`);
// a generic tagged template to replace all multiple \\ OR //
const toSingleSlashes = (strs, ...args) =>
strs.reduce( (a, v, i ) =>
a.concat(args[i-1] || ``).concat(v, ``), `` )
.replace( /(\\|\/){2,}/g, (a, b) => b );
console.log(`generic tagged template 1 ${
toSingleSlashes`C:\\backup\\`}`);
console.log(`generic tagged template 2 ${
toSingleSlashes`C:\\\\\\\\backup\\\\\\\\\\`}`);
console.log(`generic tagged template 3 ${
toSingleSlashes`C:\\\\\\\\backup\\`}`);
console.log(`generic tagged template 4 ${
toSingleSlashes`C:////////backup////`}`);
console.log(`reply to comment @chitgoks =>
"test\\\\hehehe" is by default "test\\hehehe"
so, no replacement necessary here ...`);
.as-console-wrapper {
max-height: 100% !important;
}
regex를 사용하여 모든 항목을 바꾸는 것이 가장 좋습니다.
C:\\backup\\".replace(/\/\//g, "/")[0]
다음과 같이 반환됩니다.C:\backup\
OR
스플릿을 사용하다
"C:\\backup\\".split();
둘 다 원하는 결과를 생성합니다.
C:\백업\
console.log("using \"C:\\backup\\\".replace(/\/\//g, \"/\")")
console.log("C:\\backup\\".replace(/\/\//g, "/"));
console.log("Using \"C:\\backup\\\".split()");
console.log("C:\\backup\\".split()[0]);
모든 사람들이 자신을 오해하고 있을 수도 있다고 생각합니다.console.log()
문자 교체 여부에 관계없이 자동으로 예상 결과가 표시됩니다.
const test = 'C:\\';
console.log( test ) // this will write out "C:\"
console.log( `${ test.replace( /\\{2,}/g, '\\' }` ) // this will also write out "C:\"
문자열 값이 여전히 이스케이프된 단일 문자입니다.하지만, 그console.log
당신에게 그 사실을 숨기는 것입니다.
제가 볼 때, 실제로 그것을 대체할 방법은 없습니다.\\
와 함께\
자바스크립트로
당신이 얻을 수 있는 가장 가까운 것은 이와 같은 것을 하는 것일 것입니다, 하지만 여전히 같은 방식으로 해석됩니다.
test.replace( /\\{2,}/g, '\u005C' )
언급URL : https://stackoverflow.com/questions/25304214/replace-double-backslashes-with-a-single-backslash-in-javascript
'sourcecode' 카테고리의 다른 글
Angular2 동적 변경 CSS 속성 (0) | 2023.09.01 |
---|---|
평평하지 않은 인덱스를 반환하는 numpy 배열의 Argmax (0) | 2023.09.01 |
Jersey: 요소가 1개인 Json 배열이 개체로 직렬화됩니다. (0) | 2023.09.01 |
Powershell 이미지를 https://www.artstation.com/ 에 업로드합니다. (0) | 2023.09.01 |
jQuery의 확장 메서드에 해당하는 JavaScript (0) | 2023.09.01 |