我正在网络协议中构建一个字符串,我想转义我正在传输的键值对中的特殊字符。什么是最好的方法?
例如,在URL转义方案中,空格将替换为%20。
所以有两个问题:
1)什么是最合适的逃生方案(例如网址逃逸)
2)如何进行实际逃生? (例如,如果url转义是最好的方案,则为stringByAddingPercentEscapesUsingEncoding)
e.g。
metadata:key1=value1;key2=value2
在这种情况下,我们想要转义出现在键或值中的等号,冒号和分号。
答案 0 :(得分:0)
如果你想删除所有:; =然后你可以使用:
NSCharacterSet *yourCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";:="];
NSString *escapedString = [initialString stringByTrimmingCharactersInSet:yourCharacterSet];
答案 1 :(得分:0)
当你建立字符串时,你必须调整每个键和&价值分开。
e.g。
NSMutableString *xmitText = [NSMutableString stringWithCapacity:100];
// for each key/value pair:
{
NSString *key = ...
key = [key stringByReplacingOccurrencesOfString:@"=" withString:@"\\="];
key = [key stringByReplacingOccurrencesOfString:@":" withString:@"\\:"];
key = [key stringByReplacingOccurrencesOfString:@";" withString:@"\\;"];
// Same for value
...
[xmitText appendFormat:@"%@=%@;", key, value];
}