整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Javascript - 3種 HTML 轉換為純文本的方法

          幾天,我手里的一個項目需要將富文本的所有 html 標簽全部刪除,得到純文本后再存儲到數據庫中。在一系列得搜索操作之后,我找到了實現這個目的的幾種方法,在這里我分享給大家,當你遇到同樣的情況興許也能用的上。

          1. 使用 .replace(/<[^>]*>/g, '')

          這個方法是從文本中去除 html 標簽最簡單的方法。它使用字符串的方法 .replace(待替換的字符串,替換后的字符串) 將 HTML 標簽替換成空值。 /g 是表示替換字符串所有匹配的值,即字符串中所有符合條件的字符都將被替換。

          這個方法的缺點是有些 HTML 標簽不能被剔除,不過它依然很好用。

          2. 創建臨時DOM元素并獲取其中的文本

          這種方法是完成該問題的最有效的方法。創建一個臨時 DOM 并給他賦值,然后我們使用 DOM 對象方法提取文本。

          3. 使用 html-to-text npm 包

          html-to-text 這個包的功能很全了,轉換也有許多的選項比如:wordwrap, tags, whitespaceCharacters , formatters 等等。

          安裝:

          npm install html-to-text

          使用:

          最后感謝閱讀,如果此文對您有幫助,請點贊或添加關注。

          當今互聯網時代,HTML 和 Markdown 都是非常流行的標記語言。HTML 用于構建網頁結構和內容,而 Markdown 則以其簡潔易讀的語法被廣泛用于編寫文檔、博客文章等。在很多場景下,我們需要將 HTML 內容轉換為 Markdown 格式,例如網頁內容抓取、文檔格式轉換等。

          Rust 作為一門以安全、性能和可靠性著稱的系統級編程語言,也提供了相應的庫來處理 HTML 到 Markdown 的轉換。本文將介紹一個名為 htmd 的 Rust 庫,它提供了一種高效且易于使用的方式來完成這項任務。

          htmd 簡介

          htmd 是一個受 JavaScript 庫 turndown.js 啟發而開發的 Rust 庫,用于將 HTML 文檔轉換為 Markdown 格式。它具有以下特點:

          • 功能豐富: 提供了與 turndown.js 相媲美的豐富選項,可以靈活地控制轉換過程。
          • 可靠性高: 通過了 turndown.js 的所有測試用例,確保轉換結果的準確性。
          • 依賴項少: 僅依賴于 html5ever 庫,輕量級且易于集成。
          • 性能優異: 轉換速度快,能夠高效處理大型 HTML 文檔。

          htmd 的安裝

          在使用 htmd 之前,我們需要先安裝它。將以下依賴項添加到你的 Cargo.toml 文件中:

          [dependencies]
          htmd = "0.1"

          htmd 的使用

          基本轉換

          使用 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, "![圖片描述](https://example.com/image.jpg)\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腳本中,如何對字符串中的字母進行大小寫的轉換。

          JavaScript 中的 toUpperCase() 方法

          toUpperCase():方法用于把字符串中的字母轉換為大寫。

          語法:

          stringObject.toUpperCase()
          

          返回值:

          返回一個處理過的新字符串,此字符串的所有字母為大寫

          例:js 把字符串中的所有字母轉化成大寫

          <script>
          var str = 'abclFid';
          document.write(str.toUpperCase())
          </script>
          

          返回結果:ABCLFID

          JavaScript 中的 toLowerCase() 方法

          toLowerCase():方法會將字符串中的所有字母轉換為小寫。

          語法:

          stringObject.toLowerCase()
          

          返回值:

          返回一個處理過的新字符串,此字符串中的所有字母為小寫

          例:js 字符串中的字母轉換成小寫


          主站蜘蛛池模板: 欧美日本精品一区二区三区 | 视频一区二区三区人妻系列| 福利视频一区二区牛牛| 亚洲AV乱码一区二区三区林ゆな | 亚洲男人的天堂一区二区| 琪琪see色原网一区二区| 无码AⅤ精品一区二区三区| 夜夜爽一区二区三区精品| 国产免费一区二区三区不卡| 丝袜无码一区二区三区| 亚洲色偷偷偷网站色偷一区| 免费无码A片一区二三区| 国产伦精品一区二区三区女| 一区二区三区在线观看| 无码毛片一区二区三区视频免费播放 | 国产麻豆媒一区一区二区三区| 国产日韩一区二区三免费高清| 一区二区不卡视频在线观看| 在线免费观看一区二区三区| 无码人妻一区二区三区兔费| 在线成人一区二区| 亚洲av无码一区二区三区人妖| 国产精品久久久久久麻豆一区| 亚洲一区在线视频| 中文精品一区二区三区四区| 日本一道高清一区二区三区| 激情无码亚洲一区二区三区| 国产精品美女一区二区三区 | 三上悠亚国产精品一区| av在线亚洲欧洲日产一区二区| 亚洲国产一区视频| 日本免费电影一区二区| 色妞色视频一区二区三区四区| 精品一区二区三区波多野结衣| 国产福利91精品一区二区三区 | 日韩精品无码视频一区二区蜜桃 | 国产成人AV区一区二区三| 亚洲A∨精品一区二区三区| 国产日韩精品一区二区三区在线| 99久久人妻精品免费一区| 极品少妇一区二区三区四区|