【问题标题】:Objective-C: How to replace HTML entities? [duplicate]Objective-C:如何替换 HTML 实体? [复制]
【发布时间】:2011-01-22 19:34:33
【问题描述】:

我从 Internet 获取文本,其中包含 html 实体(即ó = ó)。我想将此文本显示到自定义 iPhone 单元格中。

我尝试在我的自定义单元格中使用 UIWebView,但我更喜欢使用多行 UILabel。问题是我找不到任何替换这些 HTML 实体的方法。

【问题讨论】:

  • 你不是第一个提出这个问题的人。看看这个线程:stackoverflow.com/questions/1105169/…
  • 我以前读过这个问题,但是这个用户要求的是更容易替换的数字 HTML 实体。数字代码是一样的,你只需要替换周围的字符。

标签: iphone html objective-c special-characters


【解决方案1】:

查看我的NSString category for HTML。以下是可用的方法:

- (NSString *)stringByConvertingHTMLToPlainText;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;

【讨论】:

  • 这个分类好像是使用 Google Toolbox for Mac 的分类。
  • 是的,它使用 GTM 编码/解码 HTML 实体。
  • this 问题呢?
  • Here 是我的文件。
  • 在 iOS 6 (XCode 4.6) 中,这个库不工作:(
【解决方案2】:

Google Toolbox for Mac 包含一个与 iPhone 兼容的 NSString 附加项,它可以为您执行此操作:gtm_stringByUnescapingFromHTML 定义在 GTMNSString+HTML.hGTMNSString+HTML.m 中。如果您在 .m 中注释掉对 _GTMDevLog 和 #import "GTMDefines.h" 的调用,您只需将这两个文件添加到您的项目中即可。

【讨论】:

  • 不需要注释掉_GTMDevLog;你可以#define它自己任何你想要的。 (感谢下面的 dmaclach。)
【解决方案3】:

你可以制作一个方法,用你给的字符串替换html实体。

+(NSString*)parseString:(NSString*)str
{
    str  = [str stringByReplacingOccurrencesOfString:@"–" withString:@"-"];
    str  = [str stringByReplacingOccurrencesOfString:@"”" withString:@"\""];          
    str  = [str stringByReplacingOccurrencesOfString:@"“" withString:@"\""];          
    str  = [str stringByReplacingOccurrencesOfString:@"ó" withString:@"o"];          
    str  = [str stringByReplacingOccurrencesOfString:@"'" withString:@"'"];                
    return str;
}

调用此方法,通过发送字符串作为参数来替换字符串。

【讨论】:

    【解决方案4】:

    要扩展 Matt Stevens 的答案(因为我还不允许发表评论),您不需要注释掉 _GTMDevLog,因为它是故意设置的,以便您可以自己#define 任何您想要的。

    【讨论】:

      【解决方案5】:

      你能用NSMutableStringreplaceOccurrencesOfString:withString:options:range:方法吗?

      【讨论】:

      • 使用此消息强制我定义一个包含所有可能要替换的字符串的数组,这是一项非常繁重的工作。但是,我会尝试在其他编程语言中找到这个数组并在 Objective-C 中使用它
      猜你喜欢
      • 2012-08-22
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2013-02-04
      • 2012-10-06
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多