美文网首页
iOS开发 HTML去除标签&去除空格、换行符、制表符

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

作者: 闲云悠鹤蝶恋舞 | 来源:发表于2019-05-17 17:04 被阅读0次

    去除字符串中的指定字符

    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<arr.count; i++) {
                NSString *temp = arr[i];
                result = [NSString stringWithFormat:@"%@%@",result,temp];
            }
            return result;
        }else {
            return @"";
        }
    }
    

    将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 = "<p><span style=\"font-family:宋体\">劳动是人类创造物质或精神财富的活动,有体力的,也有脑力的。我们自己是劳动者,也是别人劳动的见证者。劳动存在于现在,也存在于过去和未来。劳动的人有不同,劳动的对象有不同,劳动的方式有不同,劳动的环境有不同</span>……<span style=\"font-family:宋体\">于是,劳动的滋味也有不同。劳动很重要,品味劳动的滋味也很重要。你对劳动有怎样的体验或感悟?请以</span>“<span style=\"font-family:宋体\">品味劳动</span>”<span style=\"font-family:宋体\">为题写一篇不少于</span>800<span style=\"font-family:宋体\">字的作文,除诗歌外文体不限。</span></p><p><br/></p>"
    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去除标签&去除空格、换行符、制表符

          本文链接:https://www.haomeiwen.com/subject/pkboaqtx.html