2010-05-28 6 views
3

webservice에 XML 요청을 보내는 iPhone OS 응용 프로그램에서 작업하고 있습니다. 요청을 보내려면 xml이 NSString에 추가됩니다. 이 작업을 수행 할 때 xml 파일에 인용 부호 "과 백 슬래시 \이 필요하여 이스케이프 처리가 필요합니다. 이스케이프해야하는 문자의 전체 목록이 있습니까? 또한NSString 백 슬래시 이스케이프

, 일의 허용 된 방법이있다이 탈출하거나 방법 자신을 만드는 경우이다 (즉 \\\"\"로 교체)?

감사

+0

무엇이 문제인지는 분명하지 않습니다. 왜 캐릭터를 벗어나야 만합니까? –

+0

안녕 니콜라이, 거의 3 년 전이었습니다. 나는 유효한 XML을 형성하기 위해 문자를 벗어날 필요가 있었다. 감사 – Jack

답변

5
NSString *escapedString = [unescapedString stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; 
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 

완전히 귀하의 질문에 대답하지만, 두 번째 부분 도움이 될 것 같아하지 않습니다 ...

1

당신은 문자의 문자를 검색하는 NSScanner을 사용할 수 있습니다 세트가 발견되면 새로운 문자열에 \\이라는 이스케이프 문자를 추가하고 발견 된 특수 문자의 다음 하위 문자열을 다음 문자까지 복사합니다.

NSString *sourceString = /* Some input String*/; 
NSMutableString *destString = [@"" mutableCopy]; 
NSCharacterSet *escapeCharsSet = [NSCharacterSet characterSetWithCharactersInString:@"()\\"]; 

NSScanner *scanner = [NSScanner scannerWithString:sourceString]; 
while (![scanner isAtEnd]) { 
    NSString *tempString; 
    [scanner scanUpToCharactersFromSet:escapeCharsSet intoString:&tempString]; 
    if([scanner isAtEnd]){ 
     [destString appendString:tempString]; 
    } 
    else { 
     [destString appendFormat:@"%@\\%@", tempString, [sourceString substringWithRange:NSMakeRange([scanner scanLocation], 1)]]; 
     [scanner setScanLocation:[scanner scanLocation]+1]; 
    } 
} 
관련 문제