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

我为我的回答道歉...

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

结果是:

 dfsdg  trt tww t     rret     
于 2013-03-07T11:46:55.623 回答
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 回答
-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 回答