2010-05-28 165 views
3

我正在開發一個將xml請求發送到web服務的iPhone OS應用程序。爲了發送請求,xml被添加到NSString。當這樣做時,我在xml文件中遇到了引號"和反斜槓\的一些問題,它們需要轉義。是否有完整的需要轉義的角色列表?NSString反斜槓轉義

此外,有沒有這樣做的一個接受的方式本逸出(即替換\\\"\")或者是它創建一個方法自己的情況?

感謝

+0

目前尚不清楚問題是什麼。你爲什麼要逃避角色? – 2013-03-20 15:00:38

+0

嗨尼古拉,這是近三年前。我需要轉義字符來形成有效的XML。謝謝 – Jack 2013-03-22 13:29:51

回答

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

沒有完全回答你的問題,但似乎像它可能與第二部分幫助...

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]; 
    } 
}