2013-04-04 76 views
0

我正在开发iOS应用程序。我从web服务接收json并将其解析到不同的NSStrings中。问题是有时候这些字符串包含了未被解码的特殊字符。从NSString中删除编码?

例如,我可以得到:Test One"Two作为NSString。

如何从NSString中删除像这样的特殊字符?

+0

那些HTML转义? – borrrden 2013-04-04 03:02:51

+2

[Objective-C:如何替换HTML实体?](http://stackoverflow.com/questions/2364797/objective-c-how-to-replace-html-entities)和/或[HTML字符解码在Objective-C /可可触摸](http://stackoverflow.com/questions/1105169/html-character-decoding-in-objective-c-cocoa-touch) – 2013-04-04 03:03:28

+0

我认为这个答案可能会解决你的问题http:// stackoverflow.com/a/2843454/778552 – 2013-04-04 03:09:01

回答

0

我写了这个类,回来协助从NSString剥离HTML。

的NSString + StripHTML

的NSString + StripHTML.h

#import <Foundation/Foundation.h> 

@interface NSString (StripHTML) 

-(NSString *)stringByStrippingHTML; 

@end 

的NSString + StripHTML.m

#import "NSString+StripHTML.h" 

@implementation NSString (StripHTML) 

-(NSString *) stringByStrippingHTML { 
    NSRange r; 
    NSString *s = [self copy]; 
    while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) 
     s = [s stringByReplacingCharactersInRange:r withString:@""]; 
    return s; 
} 

@end

希望这有助于。

+0

这不是我正在寻找的。该字符串实际上不是HTML格式。只有随机代码在里面。此外,我不想删除它,只是正确地表示它 – Stephen 2013-04-04 03:25:19

0

我想你想只是一个简单的正则表达式替换:

这是Neevik显示,Use regular expression to find/replace substring in NSString

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"&[^;]*;" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""]; 
NSLog(@"%@", modifiedString); 

这应该删除您的特殊字符。

+0

从他的评论从另一个答案:“我不想删除它,只是正确地代表它。”另外,你的正则表达式太饿了:@“Roger&Ebert认为" The Shining!"很棒。”我可能会建议'@“&#?[a-z0-9] +;”'用于模式和用例不区分大小写的搜索。这让你更加接近,但仍然非常简单。 – Rob 2013-04-04 05:10:11