我正在开发一个向Web服务发送xml请求的iPhone OS应用程序。为了发送请求,xml被添加到NSString。执行此操作时,我在xml文件中遇到了引号"
和反斜杠\
的问题,这些问题需要转义。是否有需要转义的完整字符列表?
此外,是否有一种可接受的方法可以进行此转义(即将\
替换为\\
并将"
替换为\"
),或者是创建方法的情况自己?
由于
答案 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];
}
}