在网络协议中使用的NSString中转义特殊字符的最佳方法

时间:2013-02-22 14:58:01

标签: objective-c

我正在网络协议中构建一个字符串,我想转义我正在传输的键值对中的特殊字符。什么是最好的方法?

例如,在URL转义方案中,空格将替换为%20。

所以有两个问题:

1)什么是最合适的逃生方案(例如网址逃逸)

2)如何进行实际逃生? (例如,如果url转义是最好的方案,则为stringByAddingPercentEscapesUsingEncoding)

e.g。

metadata:key1=value1;key2=value2

在这种情况下,我们想要转义出现在键或值中的等号,冒号和分号。

2 个答案:

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