我正在開發一個將xml請求發送到web服務的iPhone OS應用程序。爲了發送請求,xml被添加到NSString。當這樣做時,我在xml文件中遇到了引號"
和反斜槓\
的一些問題,它們需要轉義。是否有完整的需要轉義的角色列表?NSString反斜槓轉義
此外,有沒有這樣做的一個接受的方式本逸出(即替換\
與\\
和"
與\"
)或者是它創建一個方法自己的情況?
感謝
我正在開發一個將xml請求發送到web服務的iPhone OS應用程序。爲了發送請求,xml被添加到NSString。當這樣做時,我在xml文件中遇到了引號"
和反斜槓\
的一些問題,它們需要轉義。是否有完整的需要轉義的角色列表?NSString反斜槓轉義
此外,有沒有這樣做的一個接受的方式本逸出(即替換\
與\\
和"
與\"
)或者是它創建一個方法自己的情況?
感謝
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];
}
}
目前尚不清楚問題是什麼。你爲什麼要逃避角色? – 2013-03-20 15:00:38
嗨尼古拉,這是近三年前。我需要轉義字符來形成有效的XML。謝謝 – Jack 2013-03-22 13:29:51