常见的\ NSString strip \ escape字符怎么样?

时间:2012-11-16 21:05:19

标签: iphone ios ipad nsstring escaping

我需要一段有效的代码来删除转义字符。这是常规转义而不是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;
}

6 个答案:

答案 0 :(得分:2)

尝试使用以下代码进行HTML转义

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

常规逃脱

(NSString*) unescape:(NSString*) string 
{    
    return [string stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];
}

答案 1 :(得分:1)

您应该使用的最佳方法是:

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

您可以使用以下方式调用它:

string = [string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];

答案 2 :(得分:0)

如果其URL编码,您可能正在寻找:

stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding

答案 3 :(得分:0)

如果您想使用正则表达式,可以尝试使用正则表达式模式\\[bntr\\\\"]。或者在这里使用任何所需的正则表达式模式。

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

[regex replaceMatchesInString:str options:0 range:NSMakeRange(0, [str length]) withTemplate:@""];

答案 4 :(得分:0)

我为我的回答道歉......

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

结果是:

 dfsdg  trt tww t     rret     

答案 5 :(得分:-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:@"\\"];
    }
}