gpt4 book ai didi

javascript - 没有最后 Spintax 重复

转载 作者:行者123 更新时间:2023-11-28 08:18:28 26 4
gpt4 key购买 nike

我已经成功地将这个 php spintax 代码转换为 javascript,来源来自 http://www.edcharkow.com/blog/spintax-easy-php-code/

但有时重复的结果太频繁了,我想检查最后一次旋转的 spintax 的结果,如果是真的,它应该继续旋转。

现在我的问题是,如何在每次执行旋转时从该 Spin(s) 函数创建一个新实例作为最后的旋转结果?

我可能会以最直接的方式解决这个问题,但很想听到更好的替代方案(如果有的话)。

var text = "{{this|that} is {nice|awesome|great}!|What {are you|am I} doing?|I can't believe {this|that} is {happening|so awesome!}}";

alert( Spin(text) );

function Spin(s)
{
var m = s.match(/\{(.*?)\}/i);
if ( !m ) return s;

var t = m[1];

if ( t.indexOf("{") !== false )
{
t = t.substr(t.lastIndexOf("{") + 1);
}

var parts = t.split("|");

var regex = new RegExp("\{" + preg_quote(t) + "\}");
s = s.replace( regex, parts[Math.floor(Math.random() * parts.length)] );

return Spin(s);
}

function preg_quote(str, delimiter)
{
return String(str).replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}

最佳答案

让事情变得简单 - Spin 函数应该生成旋转文本,而不是其他任何东西。使用其他一些函数来完成您想要的操作。

这是一个用于比较运行的快速包装:

var prev = "";

var getNewSpun = function(prevSpun) {
var newspun = Spin(text);
while (newspun == prevSpun) {
newspun = Spin(text);
}
return newspun;
};


prev = getNewSpun(prev); // this should be different every time

关于javascript - 没有最后 Spintax 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23307222/

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