实现同时查找多个关键词——KeywordCrafter - 关键词匠心

这篇具有很好参考价值的文章主要介绍了实现同时查找多个关键词——KeywordCrafter - 关键词匠心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

具体功能:同时查找多个关键词,高亮加粗显示,并关键词显示出现次数。

🧐碎碎念:最近在写文案的时候,总是要避免出现一个敏感词汇,利用 (command+F) or (Ctr+F) 查找,只能一个一个单词去查,很麻烦。🤷‍♂️

所以我写了一个简单的网页,在文本框输入一整篇文章,在搜索框输入我想要查找的关键词,多个关键词用逗号 (,) 分隔开,并且统计该关键词出现次数。下面是效果图:

实现同时查找多个关键词——KeywordCrafter - 关键词匠心,前端,html,css

 接下来我们具体实现一下。

(emm……本人对前端不是很了解,下面代码仅限实现我自己的需求👩‍💻)

一、功能实现

1. html 网页具体代码:

<html>

<head>
    <title>KeywordCrafter - 关键词匠心</title>
<body>
    <div class="mm">
        <h1 style="text-align: center;">KeywordCrafter - 关键词匠心</h1>
        <textarea id="article" placeholder="请输入文本内容"></textarea><br>
        <input type="text" id="words" style="width: 30%;height: 23px; font-size: 14px;" placeholder="输入要搜索的单词(以逗号分隔)">
        <button onclick="searchWords()"><span class="search-icon"></span></button>
        <div id="wordCounts"></div>
        <div id="result"></div>

    </div>
</body>

</html>

2. JavaScript部分:

<script>
        function searchWords() {
            const articleContent = document.getElementById("article").value.toLowerCase();
            const wordsToSearch = document.getElementById("words").value.toLowerCase().split(',');

            let foundWords = {};

            for (const word of wordsToSearch) {
                const count = (articleContent.match(new RegExp(word.trim(), 'gi')) || []).length;
                if (count > 0) {
                    foundWords[word.trim()] = count;
                }
            }

            displayResult(foundWords);
        }

        // 显示筛选后的文本
        function displayResult(foundWords) {
            const articleContent = document.getElementById("article").value;
            const resultDiv = document.getElementById("result");
            const wordCountsDiv = document.getElementById("wordCounts");
            let highlightedContent = articleContent;
            if (Object.keys(foundWords).length > 0) {
                highlightedContent = highlightWords(articleContent, Object.keys(foundWords));
                let wordCountsText = "关键词 & 出现次数: ";
                for (const word in foundWords) {
                    wordCountsText += `${word} (${foundWords[word]} 次),`;
                }
                wordCountsDiv.innerText = wordCountsText;
            } else {
                wordCountsDiv.innerText = "没有发现关键词。";
            }
            resultDiv.innerHTML = highlightedContent;
        }

        // 筛选到的文本高亮加粗显示
        function highlightWords(content, words) {
            for (const word of words) {
                const regex = new RegExp(word, "gi");
                content = content.replace(regex, `<span class="highlight">${word}</span>`);
            }
            return content;
        }
    </script>

3. 网页样式:

<style>
        body {
            background-image: url("./images/bg1.jpeg");
            background-size: cover;
            /* 控制图片如何适应元素 */
            background-repeat: no-repeat;
            /* 防止图片重复平铺 */
        }

        input[type="text"],
        textarea {
            background-color: #f2f2f23e;
            /* 自定义背景颜色 */
            border: 1px solid rgba(204, 204, 204, 0.258);
            /* 边框样式 */
            padding: 10px;
            /* 内边距 */
            color: #333;
            /* 文本颜色 */
        }

        button {
            background-color: #007bff23;
            /* 按钮背景颜色 */
            color: white;
            /* 按钮文本颜色 */
            padding: 10px 20px;
            /* 内边距 */
            border: none;
            /* 去除边框 */
            cursor: pointer;
            /* 鼠标悬停样式 */
        }


        .highlight {
            background-color: yellow;
            font-weight: bold;
        }

        .mm {
            margin: 0 20px;
            /* background-image:url("./images/bg1.jpeg") */
            /* background-image:url("./images/bg2.jpeg") */
        }

        textarea {
            font-size: 16px;
            width: 100%;
            height: 42vh;
            align: center;
            text-size-adjust: 14px;
            padding: 5px;
        }

        #wordCounts {
            margin: 5px;
            color: blueviolet;
        }

        button .search-icon {
            display: inline-block;
            width: 20px;
            height: 20px;
            background-image: url('./images/ss.png');
            /* 图标的 URL */
            background-repeat: no-repeat;
            background-size: 100%;
            vertical-align: middle;
            /* 垂直居中 */
            margin-right: 5px;
            /* 图标和文字之间的间距 */
        }
    </style>

大家可以自己添加替换背景图片。

二、代码解析

(一)实现过程

主要通过JavaScript实现了同时查找多个关键词的功能。让我来解释一下具体的实现过程:

  1. 页面结构:

    • 使用<div class="mm">创建一个具有特定样式的区块,其中包含了页面元素。
    • <h1>标签显示了页面的标题,且使用了text-align: center;来将标题居中显示。
    • <textarea>标签创建了一个文本输入框,用户可以在这里输入要搜索的文章内容。
    • <input>标签用于输入要搜索的关键词,设置了样式以调整宽度、高度和字体大小。
    • <button>标签添加了一个按钮,点击按钮会触发searchWords()函数。
    • 两个<div>标签用于显示搜索结果和关键词出现次数。
  2. JavaScript功能:

    • searchWords()函数会在用户点击搜索按钮时触发。它会获取文本框中的文章内容和要搜索的关键词。
    • 对于每个关键词,使用正则表达式在文章内容中查找匹配,并统计关键词出现的次数。
    • 所有搜索到的关键词和出现次数会被保存在foundWords对象中。
  3. 显示结果:

    • displayResult()函数将搜索结果显示在页面上。如果有搜索到的关键词,它会高亮显示出现在文章内容中的关键词,并在旁边显示关键词出现的次数。
    • 如果没有搜索到关键词,将显示一个相应的提示信息。
  4. 高亮显示:

    • highlightWords()函数用于将文章内容中的关键词进行高亮显示。它通过正则表达式匹配关键词,并将匹配到的关键词用<span class="highlight">标签包裹起来,从而实现高亮效果。

通过JavaScript实现了在文本内容中同时查找多个关键词,并将匹配到的关键词高亮显示以及统计关键词出现次数的功能。同时,HTML和CSS也被用于创建网页结构和样式。

(二)正则表达式

当调用searchWords()函数时,这段代码利用了正则表达式和循环,逐个查找关键词在文章中的出现次数,并将结果存储在一个对象中,用于后续的显示和统计。

  1. 获取输入内容:const articleContent = document.getElementById("article").value.toLowerCase();

    • 这行代码获取了输入在id为"article"的文本框中的文章内容,并将内容转换为小写字母,方便后续的比较。
  2. 获取关键词:const wordsToSearch = document.getElementById("words").value.toLowerCase().split(',');

    • 这行代码获取了输入在id为"words"的文本框中的关键词,并将关键词以逗号为分隔符拆分成一个数组。
    • 之后,将每个关键词转换为小写字母,以便进行不区分大小写的匹配。
  3. 创建一个空对象来存储找到的关键词和出现次数:let foundWords = {};

  4. 遍历每个关键词并执行查找:

    for (const word of wordsToSearch) {
        const count = (articleContent.match(new RegExp(word.trim(), 'gi')) || []).length;
        if (count > 0) {
            foundWords[word.trim()] = count;
        }
    }
    
    • 在这个循环中,每个关键词都经过如下处理:
      • 使用new RegExp(word.trim(), 'gi')创建一个正则表达式对象,word.trim()用于去除关键词前后的空格。
      • 'gi'表示正则表达式会在全局范围内进行匹配(g:global)且不区分大小写(i:case-insensitive)。
      • (articleContent.match(...) || []).length会匹配所有在articleContent中的关键词,并返回匹配数组。
      • .length获取匹配数组的长度,即关键词在文章中出现的次数。
  5. 如果关键词出现次数大于0,则将关键词及其出现次数存储在foundWords对象中。

  6. 最后,调用displayResult(foundWords)函数来显示搜索结果。

以上就是全部内容了,希望能帮到你。主页有其他文章,可以看看哦~文章来源地址https://www.toymoban.com/news/detail-643281.html

到了这里,关于实现同时查找多个关键词——KeywordCrafter - 关键词匠心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现自动关键词提取

    随着互联网的发展,越来越多的人喜欢在网络上阅读小说。本文将通过详细示例,向您介绍如何使用Python编写爬虫程序来获取网络小说,并利用自然语言处理技术实现自动文摘和提取功能。 1. 网络小说数据抓取 首先,请确保已安装必要依赖包(如requests、BeautifulSoup)

    2024年02月10日
    浏览(47)
  • Vue实现搜索关键词高亮显示

    最近写移动端项目的时候,遇到搜索高亮的需求,写篇文章纪录一下 先看效果:   以上为实现效果展示; 整体思路 : 对后台返回的数据进行操作,(我这里是模拟数据),使用正则去匹配搜索后,使用replace进行字符串的替换; 渲染数据部分使用v-html进行动态展示即可

    2024年02月15日
    浏览(40)
  • highlight.js 实现搜索关键词高亮效果

    先看效果: 更新:增加切换显示 折腾了老半天,记录一下 注意事项都写注释了 代码: 更新后代码:

    2024年02月02日
    浏览(41)
  • Python实现百度关键词提取URL,轻松搞定!

    随着互联网的发展,搜索引擎已成为人们获取信息的主要途径。百度搜索引擎作为国内最受欢迎的搜索引擎之一,对于网站SEO优化而言,排名靠前的和URL是至关重要的。本文将介绍如何使用Python实现百度提取URL,帮助网站优化者更好地了解自己的网站在百度搜索

    2024年02月06日
    浏览(53)
  • 掌握Python爬虫实现网站关键词扩展提升曝光率

    目录 一、优化的重要性 二、优化的基本方法 1、选择与网站内容相关的 2、控制的密度和分布 3、的层次布局 三、Python爬虫实现网站扩展 1、确定目标网站 2、分析目标网站的HTML结构 3、编写Python爬虫代码 4、分析爬取到的数据

    2024年02月07日
    浏览(42)
  • 如何优化网站的SEO排名:通过关键词、链接和内容策略实现

    网站的SEO排名,是指搜索引擎对网站所做出的排名,影响到网站的流量和曝光量。SEO排名优化,需要通过、链接和内容等策略来实现。下面将详细介绍这些策略以及如何通过代码实现。 是指用户在搜索引擎中输入的搜索词汇。要优化SEO排名,需要针对用户的搜索

    2024年02月09日
    浏览(84)
  • php+mysql实现微信公众号回复关键词新闻列表

    非常抱歉,我之前理解有误。如果您想要实现在公众号发送,返回新闻列表的功能,可以按照以下步骤进行操作: 1. 创建一个数据库表,用于存储新闻的标题、链接和内容等信息。例如,可以创建一个名为news的表,包含id、title、link和content等字段。 2. 在公众号后台设

    2023年04月16日
    浏览(48)
  • 双方案-基于Mysql 与 ElasticSearch实现关键词提示搜索与全文检索

    就喜欢搞这种不需要怎么费劲的东西,只需要把思路阐述清楚,随笔性质的博文,顺手啊,几乎不用改定就可以当博文发布出去。 那么,这里的话我们要做的就是实现这个的一个搜索功能,这个前端我就不说了,实现起来起来其实还是容易的,就是费劲。我们主要关注

    2024年01月18日
    浏览(56)
  • 基于Word2vec词聚类的关键词实现

    基于Word2Vec的词聚类提取包括以下步骤: 整个流程的核心在于使用Word2Vec模型得到词向量,然后通过聚类算法将相似的词语归为一簇,最终提取每个簇的代表性词语作为。这种方法能够捕捉词语之间的语义关系,提高的表达力。 词向量的预处理 基于word2

    2024年01月18日
    浏览(46)
  • 文本分析-使用jieba库实现TF-IDF算法提取关键词

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+         TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包