2014-11-26 2 views
3
function slashEscape(strVar){ 
    var retVal = strVar; 
    retVal = retVal.replace(/\\/g,"\\\\"); 
    return retVal; 
} 

해당 함수를 사용하여 특정 문자열의 슬래시를 이스케이프 처리합니다. 그러나 그 결과는 옳지 않습니다.자바 스크립트에서 슬래시 이스케이프

var str = slashEscape("\t \n \s"); 

그것은 "S"대신 로됩니다 "\ t \ n \들""\t \n \s"상수 문자열 자바 스크립트 문자열 인스턴스화

+0

'\ t'는 탭 문자입니다. 함수가 존재하지 않아야합니다. 너 뭐하려고? – SLaks

+0

함수가 슬래시를 벗어나길 원합니다. "\ t \ n \ s"을 출력 할 것이고 "s"가 아닌 것입니다. –

답변

4

, 그것을 탭에 \t 변환 문자, \n을 새 줄에 입력하고 \ss에 입력합니다.

\\\으로 바꿀 수 없습니다. JavaScript와 관련하여 \ 문자가 없기 때문입니다. 탭 문자, 줄 바꿈 및 s 만 있습니다. 그런데


slashEscape("\t \n \s");의 결과 하지"s"이다. 그것은 사실입니다 :

첫 번째 줄에 탭, 새로운 라인, 다음의이다
"  
s" 

.

+0

이것은 \ t과 \ n을 벗어날 수 없다는 것을 의미합니까? –

+0

이것은 나에게 두통 haha를주고있다. –

0

Mark Gabriel이 이미 말한 바에 덧붙여 말하면 파서이며 문자열 내의 이스케이프 시퀀스를 변환하는 런타임 코드가 아닙니다. 문자열이 함수에 전달 될 때까지 파서는 이미 백 슬래시를 제거 했으므로 존재하지 않습니다.

관련 문제