iOS开发 HTML去除标签&去除空格、换行符、制表符

去除字符串中的指定字符

Swift版本:
/// 去除字符串中的指定字符
///
/// - Parameters:
///   - str: 字符串
///   - separatedBy: 要去除的字符
/// - Returns: 去除指定字符后的字符串
func JJComponents(str:String, separatedBy:String)->String {
    let arr = str.components(separatedBy: separatedBy)
    let temp = arr.reduce("") { (result, element) -> String in
        return result + element
    }
    return temp
}
OC版本:
/**
 去除字符串中的指定字符

 @param str 字符串
 @param separatedBy 要去除的字符
 @return 去除指定字符后的字符串
 */
- (NSString *)JJComponents:(NSString *)str separatedBy:(NSString *)separatedBy {
    NSArray * arr = [str componentsSeparatedByString:separatedBy];
    
    if (arr.count>0) {
        NSString *result = arr.firstObject;
        for (int i=1; i

将HTML字符串转化为去掉标签的字符串

方法一:一般不要使用,此方法很消耗性能,很卡顿,即使放到子线程里面进行转化也很卡顿的!!!
/// 将HTML字符串转化为去掉标签的字符串(一般不要使用,此方法很消耗性能,很卡顿)
///
/// - Parameter htmlStr: HTML字符串
/// - Returns: 去掉标签后的字符串
func JJHTMLTransformToString(htmlStr:String)->String {
    
    if let data = htmlStr.data(using: String.Encoding.unicode) {
        
        do{
            let attStr = try NSAttributedString.init(data: data, options:[NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html], documentAttributes: nil)
            return attStr.string
        }catch {
            return ""
        }
    }
    return ""
}

方法二:【推荐使用此方法】

Swift版本:
/// 将字符串中的标签去除
///
/// - Parameter html: 带有标签的HTML字符串
/// - Returns: 返回不带标签的字符串
func JJFilterHTML(html:String)->String {

    let scanner = Scanner(string: html)
    var text:NSString?
    var result:String = html
    
    while scanner.isAtEnd == false {
        scanner.scanUpTo("<", into: nil)
        scanner.scanUpTo(">", into: &text)
        result = result.replacingOccurrences(of: "\(text ?? "")>", with: "")
    }
    return result
}

OC版本:
/**
 将字符串中的标签去除

 @param html 带有标签的HTML字符串
 @return 返回不带标签的字符串
 */
-(NSString *)JJFilterHTML:(NSString *)html
{
    NSScanner * scanner = [NSScanner scannerWithString:html];
    NSString * text = nil;
    while([scanner isAtEnd]==NO)
    {
        [scanner scanUpToString:@"<" intoString:nil];
        [scanner scanUpToString:@">" intoString:&text];
        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];
    }
    return html;
}

使用方法二测试如下:

let html = "

劳动是人类创造物质或精神财富的活动,有体力的,也有脑力的。我们自己是劳动者,也是别人劳动的见证者。劳动存在于现在,也存在于过去和未来。劳动的人有不同,劳动的对象有不同,劳动的方式有不同,劳动的环境有不同……于是,劳动的滋味也有不同。劳动很重要,品味劳动的滋味也很重要。你对劳动有怎样的体验或感悟?请以品味劳动为题写一篇不少于800字的作文,除诗歌外文体不限。


" let htmlStr = JJFilterHTML(html:html) // 去掉HTML标签 let temp1 = JJComponents(str: htmlStr, separatedBy: "\n") // 去掉换行符 let temp2 = JJComponents(str: temp1, separatedBy: "\t") // 去掉\t let result = temp2.replacingOccurrences(of: " ", with: "") // 去掉空格 得到result的值为: "劳动是人类创造物质或精神财富的活动,有体力的,也有脑力的。我们自己是劳动者,也是别人劳动的见证者。劳动存在于现在,也存在于过去和未来。劳动的人有不同,劳动的对象有不同,劳动的方式有不同,劳动的环境有不同……于是,劳动的滋味也有不同。劳动很重要,品味劳动的滋味也很重要。你对劳动有怎样的体验或感悟?请以“品味劳动”为题写一篇不少于800字的作文,除诗歌外文体不限。"

你可能感兴趣的:(iOS开发 HTML去除标签&去除空格、换行符、制表符)