3

我正在开发一个向 Web 服务发送 xml 请求的 iPhone OS 应用程序。为了发送请求,将 xml 添加到 NSString。执行此操作时,我在 xml 文件中遇到了一些需要转义的引号"和反斜杠问题。\是否有需要转义的完整字符列表?

此外,是否有一种可接受的方式来进行这种转义(即用 和 替换\\\还是"自己\"创建方法的情况?

谢谢

4

2 回答 2

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

没有完全回答你的问题,但似乎它可能有助于第二部分......

于 2010-07-09T15:07:35.110 回答
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];
    }
}
于 2013-03-19T21:49:15.437 回答