我正在开发iOS应用程序。我从web服务接收json并将其解析到不同的NSStrings中。问题是有时候这些字符串包含了未被解码的特殊字符。从NSString中删除编码?
例如,我可以得到:Test One"Two
作为NSString。
如何从NSString中删除像这样的特殊字符?
我正在开发iOS应用程序。我从web服务接收json并将其解析到不同的NSStrings中。问题是有时候这些字符串包含了未被解码的特殊字符。从NSString中删除编码?
例如,我可以得到:Test One"Two
作为NSString。
如何从NSString中删除像这样的特殊字符?
我写了这个类,回来协助从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
希望这有助于。
这不是我正在寻找的。该字符串实际上不是HTML格式。只有随机代码在里面。此外,我不想删除它,只是正确地表示它 – Stephen 2013-04-04 03:25:19
我想你想只是一个简单的正则表达式替换:
这是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);
这应该删除您的特殊字符。
从他的评论从另一个答案:“我不想删除它,只是正确地代表它。”另外,你的正则表达式太饿了:@“Roger&Ebert认为" The Shining!"很棒。”我可能会建议'@“&#?[a-z0-9] +;”'用于模式和用例不区分大小写的搜索。这让你更加接近,但仍然非常简单。 – Rob 2013-04-04 05:10:11
那些HTML转义? – borrrden 2013-04-04 03:02:51
[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
我认为这个答案可能会解决你的问题http:// stackoverflow.com/a/2843454/778552 – 2013-04-04 03:09:01