gpt4 book ai didi

javascript - 通过调用自定义函数将 var 转换为子字符串来替换字符串 - Algo JS

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:28:31 26 4
gpt4 key购买 nike

<分区>

我正在尝试转换字符串以使用变量和参数构建它。

The min length of __40 is 4. Max length is 16.

__40 是另一个字符串键,我需要从字符串中提取键,转换它并将其替换为转换后的值(这将是键引用的字符串),为此我需要调用自定义函数[_getSentence()],同一个句子中可以有多个键,我想过做一个正则表达式,但看起来很复杂,不是吗?另外,我不知道我是否可以从正则表达式调用自定义函数,但我不这么认为。

也许拆分字符串以获得所有单词(按空格拆分),每次检查单词是否以“__”开头,在这种情况下调用我的自定义函数,存储结果并用字符串替换当前单词。但是这个新字符串还可能包含另一个我需要转换的键。

这里使用的最佳算法是什么?你是否有更好的解决方案?我的应该可以。

我还必须处理可以发送的参数,但我不必管理子键的参数。

这是一个函数,在句子被转换后由 _getSentence() 调用,用值替换 args,但我想在这里也管理子键。

/**
* Replace the tags in the text by the args.
* @param message The message.
* @param args The args to replace in the message.
* @returns {string} The string built.
*/
Lang.prototype._replaceArgsInText = function (message, args, lang) {
for (var i = 0; i < args.length; i++) {
message = message.replace((this.PATTERN_ARGS + i), args[i]);
}

// Check if some of the args was other language keys.
return message;
};

编辑:最终解决方案:

/**
* Replace the tags in the text by the args.
* @param message The message.
* @param args The args to replace in the message.
* @returns {string} The string built.
* @private
*/
private _replaceArgsInText(message: any, args: any, lang: string): string{
for(var i = 0; i < args.length; i++){
message = message.replace((this.PATTERN_ARGS+i), args[i]);
}

// Check if some of the args was other language keys.
message = this._replaceSubKeys(message, /__\w+/g, this._languages[lang][this._FIELD_CONTENT_LANG]);

return message;
}

/**
* Replace the sub keys into the sentence by the actual text.
* @param sentence
* @param rx
* @param array
* @returns {string|void}
* @private
*/
private _replaceSubKeys(sentence, rx, array): string{

return sentence.replace(rx, function(i) {
var subSentence = array[i];
// TODO Check if that's an object or a string.
if(typeof subSentence == 'string'){
return subSentence;
}else{
console.log('not a string!')
return null;
}
});
}

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