【问题标题】:Remove '\' from the string in IOS application从IOS应用程序中的字符串中删除'\'
【发布时间】:2013-03-08 07:58:52
【问题描述】:

我从带有反斜杠字符的 json 响应中得到一个字符串形式的 url。我想从 url 中删除 '\' 字符。我建立了代码,但它不起作用。代码在这里:

 NSString *responseData = [[NSString alloc]initWithData:[NSData dataWithContentsOfURL:url] encoding:NSUTF8StringEncoding];
    NSString* encodedString = [responseData stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"Response ==> %@" ,encodedString);

       // here encodedString is a url which is showing crctly in output and need to trim the \ character.

       // NSString* str = [NSString stringWithFormat: @"encodedString"];
       // str = [str stringByReplacingOccurrencesOfString:@"?" withString:@""];
       // NSLog(@"Response ==> %@" , str);

    encodedString = [encodedString stringByReplacingOccurrencesOfString:@"\\" withString:@""];
        NSLog(@"Response ==> %@" ,encodedString);

但我无法删除字符。

【问题讨论】:

  • 输出是什么?你能显示 NSLog 吗?
  • @Midhun MP encodedString 打印两次但不删除字符()响应 ==> %22http:%5C/%5C/66.561.4.34%5C/Application%22 必须删除空格和() .
  • 在 NSLog 的输出中,所有 \ 都已被删除,所以问题是什么
  • @rckoenes 我需要从 url 中删除空格 (%22) 和反斜杠 (%5C) 以进一步访问该 url...
  • 您应该删除%22 和%5C 而不是\ ,因为在刺痛中不再有n 个\ 。或者你应该在stringByAddingPercentEscapesUsingEncoding: 之前删除它们

标签: iphone objective-c html-escape-characters


【解决方案1】:

如果要删除空格和\ 字符,最好将它们从responseData 中删除。

NSString *responseData = [[NSString alloc]initWithData:[NSData dataWithContentsOfURL:url] encoding:NSUTF8StringEncoding];

responseData = [responseData stringByReplacingOccurrencesOfString:@" " withString:@""];
responseData = [responseData stringByReplacingOccurrencesOfString:@"\\" withString:@""];
NSString* encodedString = [responseData stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

【讨论】:

    【解决方案2】:

    试试这个:

        NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"\\"];
        encodedString = [[encodedString componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
        NSLog(@"%@", encodedString);
    

    希望这会有所帮助

    【讨论】:

    • 我不建议这样做,这会创建很多对象是内存并且会比正常的repalce慢。
    • NO,你的字符串应该是 foo\bar:baz.foo
    • Vaidya,你能给我最终的sn-p来克服上述问题吗
    【解决方案3】:

    试试这个方法;

    假设你的字符串包含一个\,在字符串中使用双倍作为转义下一个\

    NSMutableString *string=[NSMutableString stringWithString:@"hi this i\\s good"];
    //NSMutableString *string=[NSMutableString stringWithString:encodedString];
    
    [string replaceOccurrencesOfString:@"\\" withString:@"" options:1 range:NSMakeRange(0, string.length)];
    
    NSLog(@"%@",string);
    

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多