【问题标题】:How to trim to URL in NSString?如何修剪到 NSString 中的 URL?
【发布时间】:2014-05-16 19:22:14
【问题描述】:

我在调试时以这种方式获取我的网址:

myURL   __NSCFString *  @"(\n    "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png"\n)"  0x0a8a3510

我尝试通过方法将(\n\n)替换为""

tringByReplacingOccurrencesOfString:@" (\n " withString:@""

我终于通过这种方式获得了我的网址

myURL   __NSCFString *  @"   "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png"" 0x08c12540

但我想要的是

myURL   __NSCFString *  @"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png"  0x08c12540

有什么好的方法可以帮我得到我想要的字符串吗?

【问题讨论】:

  • 您是否将stringByReplacingOccurrencesOfString 的结果分配给变量?
  • 当您执行替换操作时,您不会替换原始字符中存在的 \" 字符,也不会修剪两端的“空白”。
  • 顺便说一句,除非您有充分的理由这样做,否则请使用 NSString 作为类名。
  • FWIW,我的编辑可能搞砸了 OP 想要展示的内容。我看到格式看起来不对,我认为是因为缺少反斜杠。但现在我不确定那是调试器输出还是什么。对不起,如果我搞砸了!

标签: ios objective-c replace nsstring


【解决方案1】:

这应该从字符串的末尾修剪非 URL 字符,加上括号字符:

NSMutableCharacterSet* urlSet = [[NSMutableCharacterSet alloc] init];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLUserAllowedCharacterSet]];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLPasswordAllowedCharacterSet]];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLHostAllowedCharacterSet]];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLPathAllowedCharacterSet]];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLQueryAllowedCharacterSet]];
urlSet = [urlSet formUnionWithCharacterSet:[NSCharacterSet URLFragmentAllowedCharacterSet]];
urlSet = [[urlSet invertedSet] mutableCopy];
[urlSet addCharactersInString:@"()"];

myURL = [myURL stringByTrimmingCharactersInSet:urlSet];

如果“\n”实际上是反斜杠+n 而不是换行符,您可能需要在剥离后执行此操作。

【讨论】:

  • 更新为去掉括号。让我知道它是否需要任何其他调整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2011-08-11
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多