2015-01-03 2 views
0

저는 많은 솔루션을 탐색했지만 어쨌든 아무 것도 작동하지 않습니다.Javascript가 이중 백 슬래시를 단일 백 슬래시로 바꿉니다.

s.replace(/\\\\/g, "\\$1"); 

s.replace(/\\\\/g, "\\"); 

그러나 어떤 결과를 없었을 : "i:0#.w|dev\\tauri;" 내가 JS 코드를 대체하기 위해 다음과 같은 노력했다

"i:0#.w|dev\tauri;"로 :

나는 문자열 다음 교체해야합니다. 더블 아직 backshashed 그냥 \\이 backshashes에 대한 작업 보인다 위해 \\\\이 사용되어야한다처럼 그러나 "

s.replace(/\\/g, "\""); 

honset되기 위하여 내 \\ 교체 다음, 나는 정말이 논리 뒤에 혼란 스러워요 것 같습니다.

현재 Sharepoint 사용자 (i:0#.w|dev\tauri)가 목록에 있는지 비교하기 위해이 작업을 수행해야합니다.

는 업데이트 : console.log(); 사용 후

좋아, 내가 뭔가 흥미로운 것을 발견했다.

INCODE : var CurrentUser = "i:0#.w|dev\tauri"; 및 CONSOLE.LOG() : i:0#.w|dev auri ...

C# 코드는 다음입니다 : 그래서

SPWeb theSite = SPControl.GetContextWeb(Context); 
SPUser theUser = theSite.CurrentUser; 
return theUser.LoginName; 
+1

처음 두 개가 아무 것도하지 않고's.replace (/ \\/g, "\" ");가'\\'를 하나의'''로 바꾸면, 당신은 오직 하나의 백 슬래시 문자열로 시작합니다. 디버거에 표시되는 내용과 문자열의 실제 백 슬래시 수를 혼동하지 마십시오. – JLRishe

+0

가능한 중복 [이중 백 슬래시를 자바 스크립트에서 단일 백 슬래시로 바꾸기] (http://stackoverflow.com/questions/25304214/replace-double-backslashes-with-a-single-backslash-in-javascript) 참고 : [ "\\"를 C#의 문자열에서 "\"로 바꾸십시오 (http://stackoverflow.com/questions/7482360/replace-with-in-a-string-in-c-sharp) – JLRishe

+0

하지만 문제는 , 대체하려고하지 않더라도 두 문자열을 비교하는 것은 여전히 ​​거짓입니다 – Taurib

답변

1

JavaScript strings need to be escaped을 다시 두 개의 슬래시, 자바 스크립트 해석 리터럴 문자열을 받고있는 경우 그것은 단지 하나입니다. 문자열에서 비교할 때 사용하고, 탭 문자 인 \ t를 원할 때 \ t를 사용합니다. 내 생각 엔 현재 SharePoint 사용자를 가져 오는 모든 곳에서 이스케이프가 제대로 수행되고 있지만 비교 목록은 그렇지 않습니다.

편집 :

또는 그 반대 일 수 있습니다. .NET 4+ JavaScriptStringEncode을 사용하는 경우 도움이 될 수 있습니다. 그래도 문제가 있다면 비교하는 방법을 알려 주시면 도움이 될 것입니다.

+0

'Regex.Escape();'가있는 코드에서 작동합니다. 고맙습니다! :) – Taurib

관련 문제