从 NSString 中删除 WYSIWYG 编辑器标记
Removing WYSIWYG editor markup from an NSString
我正在从我的 Web 服务(我需要在 UILabel
中设置)返回一个字符串,该字符串具有所见即所得的编辑器标记(不是 HTML) 例如:
[size=3][b]This is an awesome post![/b][/size]
我有一个 NSString
的方法可以去除 HTML,但我不确定如何修改它来搜索这类开始和结束标签。
// How can I modify this?
+ (NSString *)stripHTML:(NSString *)html {
NSRange r;
NSString *s = [html copy];
while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
s = [s stringByReplacingCharactersInRange:r withString:@""];
return s;
}
有人可以阐明我可以使用的正则表达式吗?
您可以试试下面的代码:
NSError *error = nil;
NSString *myText = @"[size=3][b]This is an awesome post![/b][/size]";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\[\/?.*?\]" options:NSRegularExpressionDotMatchesLineSeparators error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:myText options:0 range:NSMakeRange(0, [myText length]) withTemplate:@""];
NSLog(@"%@", modifiedString);
只需将其包装到一个单独的方法中即可。
sample program 的输出:
This is an awesome post!
对于HTML文本,一种解决方案可能不是100%但可能有效:
NSString *strText = @"[size=3][b]This is an awesome post![/b][/size]";
strText = [strText stringByReplacingOccurrencesOfString:@"[" withString:@"<"];
strText = [strText stringByReplacingOccurrencesOfString:@"]" withString:@">"];
NSLog(@"%@",strText);
在 UIWebView 中使用时如下所示:
我正在从我的 Web 服务(我需要在 UILabel
中设置)返回一个字符串,该字符串具有所见即所得的编辑器标记(不是 HTML) 例如:
[size=3][b]This is an awesome post![/b][/size]
我有一个 NSString
的方法可以去除 HTML,但我不确定如何修改它来搜索这类开始和结束标签。
// How can I modify this?
+ (NSString *)stripHTML:(NSString *)html {
NSRange r;
NSString *s = [html copy];
while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
s = [s stringByReplacingCharactersInRange:r withString:@""];
return s;
}
有人可以阐明我可以使用的正则表达式吗?
您可以试试下面的代码:
NSError *error = nil;
NSString *myText = @"[size=3][b]This is an awesome post![/b][/size]";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\[\/?.*?\]" options:NSRegularExpressionDotMatchesLineSeparators error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:myText options:0 range:NSMakeRange(0, [myText length]) withTemplate:@""];
NSLog(@"%@", modifiedString);
只需将其包装到一个单独的方法中即可。
sample program 的输出:
This is an awesome post!
对于HTML文本,一种解决方案可能不是100%但可能有效:
NSString *strText = @"[size=3][b]This is an awesome post![/b][/size]";
strText = [strText stringByReplacingOccurrencesOfString:@"[" withString:@"<"];
strText = [strText stringByReplacingOccurrencesOfString:@"]" withString:@">"];
NSLog(@"%@",strText);
在 UIWebView 中使用时如下所示: