2

エスケープ文字を削除する効率的なコードが必要です。これは HTML エスケープ文字ではなく通常のエスケープ文字です。

例: "\""、 "\\\\"、 "\"、 "\\"

あらゆる種類のエスケープ シーケンスを削除する一般的なアルゴリズムが必要です。

正規表現などのユーティリティを使用できます。

  (NSString*) unescape:(NSString*) string {

      ....
  }

これは私が書いた答えです:

-(NSString*) unescape:(NSString*) string
{

    for(int i = 0; i < string.length; i++) {
        char a = [string characterAtIndex:i];
        if([string characterAtIndex:i] == '\\' ) {
            string = [string stringByReplacingCharactersInRange:NSMakeRange(i,1) withString:@""];
        }

    }
    return string;
}
4

6 に答える 6

2

HTMLエスケープのために以下のコードを使用してみてください

(NSString*) unescape:(NSString*) string 
{
    return [string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

通常のエスケープ用

(NSString*) unescape:(NSString*) string 
{    
    return [string stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];
}
于 2012-11-16T21:20:28.373 に答える
1

使用するのに最適な方法は次のとおりです。

- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set

あなたはそれを使用して呼び出すでしょう:

string = [string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
于 2012-11-17T01:02:46.517 に答える
0

URLエンコードされている場合は、おそらく次のものを探しています。

stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding
于 2012-11-16T21:14:35.523 に答える
0

正規表現を使用したい場合は、正規表現パターンを試してみてください\\[bntr\\\\"]。または、ここで必要な正規表現パターンを使用します。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:
                              @"\\[bntr\\\\"]" options:0 error:nil];

[regex replaceMatchesInString:str options:0 range:NSMakeRange(0, [str length]) withTemplate:@""];
于 2012-11-17T00:57:07.047 に答える
0

私の回答で申し訳ありません...

NSString *_string = @"\\\\ dfsdg \\ tr\\\\t \\\\\\tw\\\\\\\\w\\ t\\ \\\\ \\ \\\\\\  rret\\    \\\\ \\\\\\\\";
NSLog(@"%@", [_string stringByReplacingOccurrencesOfString:@"\\" withString:@""]);

結果は次のとおりです。

 dfsdg  trt tww t     rret     
于 2013-03-07T11:46:55.623 に答える
-1

お役に立てれば:

-(NSString *)unescape:(NSString *)string 
{
    if ([string rangeOfString:@"\\"].location != NSNotFound)
    {
        [string stringByReplacingCharactersInRange:@"\\" withString:@"\\"];
    }
    else if ([string rangeOfString:@"\\\\"].location != NSNotFound)
    {
        [string stringByReplacingCharactersInRange:@"\\\\" withString:@"\\"];
    }
    else if ([string rangeOfString:@"\\\\"].location != NSNotFound)
    {
        [string stringByReplacingCharactersInRange:@"\\\\" withString:@"\\"];
    }
}
于 2012-11-16T21:53:34.637 に答える