1

文字列内のバックスラッシュの置き換えに問題があります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

注: このトークンを文字列に追加してハッシュを計算する必要があるため、機能させることが非常に重要です。

4

1 に答える 1

0

これはmytokenOrig、バックスラッシュが含まれていないためです。エスケープされた改行が既に含まれています。

[mytokenOrig replaceOccurrencesOfString:@"\n" withString:@"\\n" options:NSCaseInsensitiveSearch range:(NSRange){0,[mytokenOrig length]}];


ただし、文字列を (再) エスケープする必要はありません。エスケープ文字は、コードに特殊文字を記述できるようにするためのものです。

于 2012-05-03T14:39:11.143 に答える