gpt4 book ai didi

javascript - 替换最后一次出现的随机单词

转载 作者:行者123 更新时间:2023-12-02 16:46:56 25 4
gpt4 key购买 nike

我有一个小 jQuery 脚本,其工作方式类似于 Emmet/ZenCoding,并且可以在 textarea 中按 TAB 键将关键字扩展为片段。

当关键字只出现一次时它工作正常,但我不知道如何仅替换字符串中最后一次出现的单词。

以下是在 textarea 中键入的示例字符串:

Have a look at the rules : rules

在这种情况下,用户将在第二个规则之后按 TAB 键,脚本会获取数组中的相应值,以将单词替换为规则的实际链接。它应该(理论上)被替换为:

Have a look at the rules : http://website.com/rules.php

我的问题是,我正在使用replace,它将替换所有出现的该单词,这不是所需的行为。这是脚本的相关部分:

var content = $(this).val();
content = content.replace(lastWord, insertSnippets[lastWord]);
$(this).val(content);

它首先获取当时textarea中的内容,将单词(规则)替换为对应的值(实际链接)。有什么办法可以只替换最后一次出现的情况吗?它并不总是“规则”这个词,还有十几个长度未知的其他关键字。

TL;DR 如何使用 jQuery/Javascript 仅替换最后一次出现的单词?

我正在考虑获取插入符号的当前位置并仅替换其左侧的单词,但是获取插入符号的位置似乎相当乏味 - 而且我仍然不知道如何进行替换。

最佳答案

只要您的搜索字符串不包含任何正则表达式特殊字符,就可以做到这一点:

var replaceLast = function(searchFor, replaceWith, str) {
return str.replace(
new RegExp("^(.*)" + searchFor + "(.*?)$"),
function(_, before, after) {return before + replaceWith + after;}
);
};

replaceLast("rules", "http://website.com/rules.php",
"Have a look at the rules : rules", "rules");
//=> "Have a look at the rules : http://website.com/rules.php"

如果此函数传递给某个 curry 函数,那么您可以通过

创建一个诸如 updateRules 的函数
var updateRules = replaceLast("rules", "http://website.com/rules.php");
// ... later
updateRules("Have a look at the rules : rules", "rules");
//=> "Have a look at the rules : http://website.com/rules.php"

但是原始功能可能就满足您的需求了。

关于javascript - 替换最后一次出现的随机单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27047794/

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