【问题标题】:Removing WYSIWYG editor markup from an NSString从 NSString 中删除 WYSIWYG 编辑器标记
【发布时间】:2015-04-14 12:57:04
【问题描述】:

我从我的 Web 服务(我需要在 UILabel 中设置)返回一个字符串,该字符串具有所见即所得的编辑器标记(不是 HTML),例如:

[size=3][b]This is an awesome post![/b][/size]

我有一个用于去除 HTML 的 NSString 方法,但我不确定如何修改它来搜索这类开始和结束标签。

// 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;
}

有人能解释一下我可以使用的正则表达式吗?

【问题讨论】:

  • 您可以尝试@"\\[\\/?.*?\\]"NSRegularExpressionDotMatchesLineSeparators 选项。但它会删除方括号之间的所有字符串

标签: ios objective-c regex nsstring


【解决方案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! 

【讨论】:

  • 很好,随时准备提供帮助。如果您找到更可靠的解决方案,请随时分享。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多