首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective C HTML转义/取消转义

Objective C HTML转义/取消转义
EN

Stack Overflow用户
提问于 2009-03-18 18:43:24
回答 12查看 96.3K关注 0票数 74

想知道在Objective C中有没有一个简单的方法来做一个简单的HTML转义/取消转义。我想要的是类似下面这样的代码:

代码语言:javascript
复制
NSString *string = @"<span>Foo</span>";
[string stringByUnescapingHTML];

它会返回

代码语言:javascript
复制
<span>Foo</span>

希望不会转义所有其他的超文本标记语言实体,甚至像Ӓ之类的ASCII码。

在Cocoa Touch/UIKit中有什么方法可以做到这一点吗?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-03-18 18:51:48

link包含以下解决方案。Cocoa CF具有CFXMLCreateStringByUnescapingEntities功能,但在iPhone上不可用。

代码语言:javascript
复制
@interface MREntitiesConverter : NSObject <NSXMLParserDelegate>{
    NSMutableString* resultString;
}

@property (nonatomic, retain) NSMutableString* resultString;

- (NSString*)convertEntitiesInString:(NSString*)s;

@end


@implementation MREntitiesConverter

@synthesize resultString;

- (id)init
{
    if([super init]) {
        resultString = [[NSMutableString alloc] init];
    }
    return self;
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
        [self.resultString appendString:s];
}

- (NSString*)convertEntitiesInString:(NSString*)s {
    if (!s) {
        NSLog(@"ERROR : Parameter string is nil");
    }
    NSString* xmlStr = [NSString stringWithFormat:@"<d>%@</d>", s];
    NSData *data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSXMLParser* xmlParse = [[[NSXMLParser alloc] initWithData:data] autorelease];
    [xmlParse setDelegate:self];
    [xmlParse parse];
    return [NSString stringWithFormat:@"%@",resultString];
}

- (void)dealloc {
    [resultString release];
    [super dealloc];
}

@end
票数 30
EN

Stack Overflow用户

发布于 2010-05-16 19:02:03

看看我的NSString category for XMLEntities吧。有一些方法可以解码XML实体(包括所有HTML字符引用),对XML实体进行编码,剥离标记并删除字符串中的换行符和空格:

代码语言:javascript
复制
- (NSString *)stringByStrippingTags;
- (NSString *)stringByDecodingXMLEntities; // Including all HTML character references
- (NSString *)stringByEncodingXMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;
票数 91
EN

Stack Overflow用户

发布于 2011-03-02 13:48:48

Google Toolbox for Mac的另一个超文本标记语言NSString类别

尽管名称如此,但它在iOS上也是有效的。

http://google-toolbox-for-mac.googlecode.com/svn/trunk/Foundation/GTMNSString+HTML.h

代码语言:javascript
复制
/// Get a string where internal characters that are escaped for HTML are unescaped 
//
///  For example, '&amp;' becomes '&'
///  Handles &#32; and &#x32; cases as well
///
//  Returns:
//    Autoreleased NSString
//
- (NSString *)gtm_stringByUnescapingFromHTML;

我只需要在项目中包含三个文件: header、implementation和GTMDefines.h

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/659602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档