gpt4 book ai didi

javascript - 循环遍历同一字符串的多个实例的文本

转载 作者:行者123 更新时间:2023-11-28 17:11:14 24 4
gpt4 key购买 nike

我有一段文字,其中可能有多个相同的单词。每当这个单词出现时,我都想将其替换为它本身,但将其包裹在 div 中,以便我可以应用样式并添加一些额外的文本。

我已经对这个词的第一个实例进行了处理:

var definition = glossaryList[index].definition;
var termStart = textAsLower.search(termAsLower);
var termEnd = term.length + termStart;
var replacedText = addDefinitionToText(textContent, term, definition, termStart, termEnd);

function addDefinitionToText(textContent, term, definition, termStart, termEnd) {
var textStart = textContent.substring(0, termStart);
var termInText = textContent.substring(termStart, termEnd);
var textEnd = textContent.substring(termEnd);

var replacedTerm = '<span class="has-definition">' + termInText;
replacedTerm += '<div class="attached-definition">';
replacedTerm += '<div class="defintion-title">' + term + '</div>';
replacedTerm += '<div class="definition-text">' + definition + '</div>';
replacedTerm += '</div>';
replacedTerm += '</span>';

return textStart + replacedTerm + textEnd;
}

我尝试将此函数放入 while 循环中并进行计数,但它导致了我的问题并卡住或未返回我所期望的内容:

while(something.toLowerCase().search(termAsLower)) {
var something = textAsLower.substring(termEnd);
termStart = something.search(termAsLower);
termEnd = term.length + termStart;
replacedText = addDefinitionToText(something, term, definition, termStart, termEnd);
something = replacedText.substring(termEnd);
}

有人能解决这个问题吗?理想情况下,我实际上想要一种与 .search() 不同的方法,它可以找到所有实例,而不仅仅是第一个实例,但我的搜索并没有取得太多成果。

谢谢!

最佳答案

您可以简单地使用正则表达式来实现您想要的:

var searchWord = "tag";
var textStr = "HTML tag is used for scripting. Tag can also be self-closing.";

// case-insensitive regex
var re = new RegExp(searchWord, "gi");
textStr = textStr.replace(re, '<' + searchWord + '>');

// case-sensitive search
var re = new RegExp(searchWord, "g");
textStr = textStr.replace(re, '<' + searchWord + '>');

关于javascript - 循环遍历同一字符串的多个实例的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54345744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com