我正在开发一个向 Web 服务发送 xml 请求的 iPhone OS 应用程序。为了发送请求,将 xml 添加到 NSString。执行此操作时,我在 xml 文件中遇到了一些需要转义的引号"
和反斜杠问题。\
是否有需要转义的完整字符列表?
此外,是否有一种可接受的方式来进行这种转义(即用 和 替换\
)\\
还是"
自己\"
创建方法的情况?
谢谢
NSString *escapedString = [unescapedString stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
没有完全回答你的问题,但似乎它可能有助于第二部分......
您可以使用 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];
}
}