从NSString中删除WYSIWYG编辑器标记

时间:2015-04-14 12:57:05

标签: ios objective-c regex nsstring

我从我的Web服务(我需要在UILabel中设置)获得一个字符串,该字符串具有WYSIWYG编辑器标记(不是 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;
}

有人可以对我可以使用的正则表达式有所了解吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

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! 

答案 1 :(得分:0)

对于 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中使用时,它如下所示:

enter image description here