2009-08-15 6 views
9

Objective-C의 NSString에 단일 백 슬래시 (\)를 추가하는 쉬운 방법을 아는 사람이 있습니까? 나는 NSString *temp = @"\/Date(100034234)\/"을 갖기 위해 노력하고 있습니다.NSString @ ""백 슬래시 문자 objective-c를 추가합니다.

이중 백 슬래시 또는 백 슬래시가 없지만 단일 백 슬래시를 얻을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다

답변

17

문자열 @"\\"@"\\\\"이는 NSLog의 버그 이중 백 슬래시

+1

정말이에요? NSLog를 사용하여 NSString을 인쇄 할 때 이중 백 슬래시로 표시됩니다. –

+6

NSLog (문자열)를 사용하는 것은 좋지 않습니다. 모든 사람이 시스템을 크래시하기 위해해야만합니다. % d인데, 이는 값에 대한 역 참조로 해석됩니다. 그 자체로 NSString의 값을 인쇄하려면 다음을 사용해야합니다. NSLog (@ "@ %", string) 그런데 'string'의 값이 결과 출력에 영향을 미치지 않습니다. 오브젝트 유형입니다. – AlBlue

3

이며, 단일 백 슬래시입니다. 이 here에 대한 버그를 제출 한 사람이 2002 년에 보낸 메시지가있는 메일 링리스트 아카이브를 발견했습니다. 그 사람도 이렇게 말했습니다.

내가 말할 수있는 한 아무 것도 수행되지 않았습니다. 나는 그들이 어떻게했는지 이해하지 못한다. NSLog. 이스케이프 처리가 문자열에 대해 작동하지 않는다. NSLog.

정말 백 슬래시를 원한다면 로그 메시지를 직접 구현해야합니다.

+0

다른 방법이 있습니까? 또한 하나의 리터럴 백 슬래시 문자를 나타내고 문자열에 추가하는 다른 방법을 알고 있습니까? –

+0

당신은'NSString * string = @ "\\"; NSLog (@ "% @", string); ' – Tim

+0

NSLog에는 아무런 문제가 없습니다. 백 슬래시를 두 개로 대체하는 코드로 배치 된 네 개의 백 슬래시가 포함 된 문자열입니다. 그가 인쇄 할 때 4가 있기 때문에 2와 같이 보입니다. –

6

문자열 및 NSLog 나 (아이폰 SDK 3.1.2와 엑스 코드 3.2.1)에 대한 제대로 작동됩니다

NSLog(@"\\"); // output is one backslash 
NSLog(@"\\\\"); // output is two backslashes 
NSLog(@"\\/Date(100034234)\\/"); // output is \/Date(100034234)\/ 

this answer를 참조하십시오.

3

이 코드 는 요청 된 출력을 제공 않습니다

NSString *temp = @"\\/Date(100034234)\\/"; 
NSLog(@"%@",temp); 

나는 "\\\\"와 "\\"모든 occurrances 대체 내 JSON 툴킷 (SBJSON)에 문제가 있었다 그러나을, 다른 답변과 의견에 설명 된대로 문제를 일으켰습니다. 이 솔루션은 사용 된 here

내 대답을 참조하십시오

@"\\\\/Date(100034234)\\\\/" 

:

결과

는 문자열처럼 보이는했다 당신이 \ 추가 또는 제거 할

temp = [temp stringByReplacingOccurancesOfString:@"\\\\" withString:@"\\"]; 
+0

오, 그래서 이스케이프는 컴파일 타임에 평가되지 않습니까? 흥미로운 ... –

+0

지금까지 나는 여전히 모든 것이 잘 작동하기를 기대합니다. 아직 버그가 아닌 작동하지 않는 예제를 아직 보지 못했습니다. – Eiko

+0

Ben - 사전 정의 된 문자열의 경우 해당 문자열이 적합해야합니다. 그러나 이러한 질문이 발생하는 많은 경우에 미리 정의 된 문자열에만 사용하도록되어 있지 않습니다. 오래 전부터 내 기억이 모호하지만 내 경우에는 JSON을 통해 컴파일 타임에 알 수없는 데이터 문자열을 실행하면 결과가 엉망이되었습니다. –

1

. 그 자리에 \\ 그냥.

관련 문제