2009-11-02 9 views
1

이 코드 줄은 예상 한 결과를 생성하지 않습니다. 메서드 호출에서 백 슬래시를 이스케이프합니다. stringByReplacingOccurrencesOfString은 Objective C에서 작동하지 않습니다.

NSString *tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 

나는이 같은 문자열을 변경하려고 시도하고있다 :

인사는, "이"내 문자열입니다.

안녕하세요, \ "this \"이 (가) 내 문자열입니다.

위 코드를 사용하십시오. 그러나 얻을 수있는 출력은 다음과 같습니다.

안녕하세요, \\ "this \\"는 제 문자열입니다.

내가 검색 문자열 \\에서 \\를 제거하면 "대체 할 \"나는 출력을 얻을 :

안녕하세요, "이"내 문자열입니다.

어느 쪽이 맞습니까? 그러나 내 "이스케이프 시퀀스와 함께 \ infront를 추가 할 수 없습니다. \\는 백 슬래시로, \"는 큰 따옴표로 사용할 수 없습니다.

답변

1

문자열을 어떻게 확인 하시겠습니까? NSLog()를 사용하여 콘솔에 출력 할 경우 앞에 오는 백 슬래시가 삽입됩니다. 그것에 UILabel의 텍스트를 설정해보고, 그런 식으로 나타나는지 확인하십시오. 코드가 올바르게 보입니다.

+0

중단 점에서 변수를 가리키며 IT가 올바른 것처럼 \\ ". NSLog에서 \"into "를 평가했을 때. 호버가 내가 생각하는 이스케이프 시퀀스를 평가하지 않습니다. – Robert

+1

또한 'NSLog (str)'이 아니라'NSLog (@ "% @", str)'을하고 있는지 확인하십시오. – Wevah

1

소스 문자열 (tmpstoryTitle)에 슬래시가 포함되어 있지 않습니까? 난 그냥

NSString * tmpstoryTitle = [[NSString alloc] initWithString: @"hello, \"this\" is my string."]; 
NSString * tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 
NSLog(@"%@", tmpstoryTitle); 
NSLog(@"%@", tmpstoryTitle2); 

을 시도하고 생산 :이다

2009-11-02 22:32:40.756 JezzBall[71173:207] hello, "this" is my string. 
2009-11-02 22:32:40.767 JezzBall[71173:207] hello, \"this\" is my string. 

당신이 기대하는 것 같아?

관련 문제