0

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

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

所以有两个问题:

1)什么是最合适的转义方案(例如url转义)

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

例如

metadata:key1=value1;key2=value2

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

4

2 回答 2

0

如果你想删除所有 : ; = 那么你可以使用:

NSCharacterSet *yourCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";:="];
NSString *escapedString = [initialString stringByTrimmingCharactersInSet:yourCharacterSet];
于 2013-02-22T15:03:03.293 回答
0

在构建字符串时,您必须分别调整每个键和值。

例如

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];
}
于 2013-02-22T15:03:27.740 回答