我在替换字符串K90wuRcDX43cqDB7xkjReuzb\/nDaC0xc7Bqxi4Ft0T6EscKzEBXBJ6k8fFLl6j0S
中的反斜杠时遇到问题。
如果我手动转义字符串中的反斜杠我没有问题
NSString *mytoken = @"K90wuRcDX43cqDB7xkjReuzb\\/nDaC0xc7Bqxi4Ft0T6EscKzEBXBJ6k8fFLl6j0S";
NSLog(@"mytoken %@",mytoken);
mytoken K90wuRcDX43cqDB7xkjReuzb\/nDaC0xc7Bqxi4Ft0T6EscKzEBXBJ6k8fFLl6j0S
但是如果我尝试以编程方式进行操作,那么我就无法逃避反斜杠(我尝试了所有内容:CFString,stringByReplacingOccurrencesOfString
,replaceOccurrencesOfString
)
NSMutableString *mytokenOrig = [NSMutableString stringWithFormat:@"K90wuRcDX43cqDB7xkjReuzb\/nDaC0xc7Bqxi4Ft0T6EscKzEBXBJ6k8fFLl6j0S"];
[mytokenOrig replaceOccurrencesOfString:@"\\" withString:@"\\\\" options:NSCaseInsensitiveSearch range:(NSRange){0,[mytokenOrig length]}];
NSLog(@"mytokenOrig %@",mytokenOrig);
mytokenOrig K90wuRcDX43cqDB7xkjReuzb/
nDaC0xc7Bqxi4Ft0T6EscKzEBXBJ6k8fFLl6j0S
注意:我必须将此标记附加到字符串并计算哈希值,因此使其工作非常重要。
答案 0 :(得分:0)
这是因为mytokenOrig
不包含反斜杠,它已包含转义的换行符。
[mytokenOrig replaceOccurrencesOfString:@"\n" withString:@"\\n" options:NSCaseInsensitiveSearch range:(NSRange){0,[mytokenOrig length]}];
但是,您不需要(重新)转义字符串。 Escape characters是为了能够在代码中编写特殊字符。