几天,我手里的一个项目需要将富文本的所有 html 标签全部删除,得到纯文本后再存储到数据库中。在一系列得搜索操作之后,我找到了实现这个目的的几种方法,在这里我分享给大家,当你遇到同样的情况兴许也能用的上。
这个方法是从文本中去除 html 标签最简单的方法。它使用字符串的方法 .replace(待替换的字符串,替换后的字符串) 将 HTML 标签替换成空值。 /g 是表示替换字符串所有匹配的值,即字符串中所有符合条件的字符都将被替换。
这个方法的缺点是有些 HTML 标签不能被剔除,不过它依然很好用。
这种方法是完成该问题的最有效的方法。创建一个临时 DOM 并给他赋值,然后我们使用 DOM 对象方法提取文本。
html-to-text 这个包的功能很全了,转换也有许多的选项比如:wordwrap, tags, whitespaceCharacters , formatters 等等。
安装:
npm install html-to-text
使用:
最后感谢阅读,如果此文对您有帮助,请点赞或添加关注。
当今互联网时代,HTML 和 Markdown 都是非常流行的标记语言。HTML 用于构建网页结构和内容,而 Markdown 则以其简洁易读的语法被广泛用于编写文档、博客文章等。在很多场景下,我们需要将 HTML 内容转换为 Markdown 格式,例如网页内容抓取、文档格式转换等。
Rust 作为一门以安全、性能和可靠性著称的系统级编程语言,也提供了相应的库来处理 HTML 到 Markdown 的转换。本文将介绍一个名为 htmd 的 Rust 库,它提供了一种高效且易于使用的方式来完成这项任务。
htmd 是一个受 JavaScript 库 turndown.js 启发而开发的 Rust 库,用于将 HTML 文档转换为 Markdown 格式。它具有以下特点:
在使用 htmd 之前,我们需要先安装它。将以下依赖项添加到你的 Cargo.toml 文件中:
[dependencies]
htmd = "0.1"
基本转换
使用 htmd 进行 HTML 到 Markdown 的基本转换非常简单。以下代码展示了如何将一个 <h1> 标签转换为 Markdown 中的 # 标题:
use htmd::HtmlToMarkdown;
fn main() {
let markdown = HtmlToMarkdown::new();
let html = "<h1>这是一个标题</h1>";
let result = markdown.convert(html).unwrap();
assert_eq!(result, "# 这是一个标题\n");
}
跳过标签
在某些情况下,我们可能希望跳过 HTML 文档中的某些标签,例如 <script> 和 <style> 标签。htmd 提供了 skip_tags 方法来实现这一点:
use htmd::HtmlToMarkdown;
fn main() {
let markdown = HtmlToMarkdown::builder()
.skip_tags(vec!["script", "style"])
.build();
let html = r#"
<script>
// 一些 JavaScript 代码
</script>
<h1>这是一个标题</h1>
"#;
let result = markdown.convert(html).unwrap();
assert_eq!(result, "# 这是一个标题\n");
}
自定义标签处理器
htmd 允许我们自定义标签处理器来处理特定的 HTML 标签。例如,我们可以定义一个处理器将 <img> 标签转换为 Markdown 中的图片语法:
use htmd::{HtmlToMarkdown, HandleResult};
use html5ever::tendril::StrTendril;
use html5ever::QualName;
fn main() {
let markdown = HtmlToMarkdown::builder()
.add_handler(
vec!["img"],
|el| {
let src = el
.attrs
.iter()
.find(|(name, _)| name.local.as_ref() == "src")
.map(|(_, value)| value.as_ref());
let alt = el
.attrs
.iter()
.find(|(name, _)| name.local.as_ref() == "alt")
.map(|(_, value)| value.as_ref());
match (src, alt) {
(Some(src), Some(alt)) => Some(format!("", alt, src)),
_ => None,
}
},
)
.build();
let html = r#"<img src="https://example.com/image.jpg" alt="图片描述">"#;
let result = markdown.convert(html).unwrap();
assert_eq!(result, "\n");
}
多线程处理
htmd 支持多线程处理,可以充分利用多核 CPU 的性能来加速转换过程。以下代码展示了如何使用多线程将多个 HTML 文档转换为 Markdown:
use htmd::HtmlToMarkdown;
use std::sync::Arc;
use std::thread;
fn main() {
let markdown = Arc::new(HtmlToMarkdown::new());
let html_docs = vec![
"<h1>文档 1</h1>",
"<h2>文档 2</h2>",
"<h3>文档 3</h3>",
];
let threads: Vec<_> = html_docs
.into_iter()
.map(|html| {
let markdown = markdown.clone();
thread::spawn(move || {
let result = markdown.convert(html).unwrap();
println!("{}", result);
})
})
.collect();
for thread in threads {
thread.join().unwrap();
}
}
htmd 是一个功能强大且易于使用的 Rust 库,用于将 HTML 文档转换为 Markdown 格式。它提供了丰富的选项、自定义标签处理器和多线程支持,可以满足各种转换需求。如果你正在寻找一种高效可靠的 HTML 到 Markdown 转换解决方案,htmd 绝对值得一试。
编程逻辑的实际应用中,有可能需要对字符串中字母进行大小写进行转换。而今天我们就说一说在html前端的js脚本中,如何对字符串中的字母进行大小写的转换。
toUpperCase():方法用于把字符串中的字母转换为大写。
语法:
stringObject.toUpperCase()
返回值:
返回一个处理过的新字符串,此字符串的所有字母为大写
<script> var str = 'abclFid'; document.write(str.toUpperCase()) </script>
返回结果:ABCLFID
toLowerCase():方法会将字符串中的所有字母转换为小写。
语法:
stringObject.toLowerCase()
返回值:
返回一个处理过的新字符串,此字符串中的所有字母为小写
例:js 字符串中的字母转换成小写
*请认真填写需求信息,我们会在24小时内与您取得联系。