去除字符串中的指定字符
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字的作文,除诗歌外文体不限。"
网友评论