NSString反斜杠转义

时间:2010-05-28 19:34:18

标签: iphone xml nsstring backslash

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

此外,是否有一种可接受的方法可以进行此转义(即将\替换为\\并将"替换为\"),或者是创建方法的情况自己?

由于

2 个答案:

答案 0 :(得分:5)

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

没有完全回答你的问题,但似乎对第二部分有帮助......

答案 1 :(得分: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];
    }
}