我正在遍历一组英语短语,如果我找到与当前文本节点匹配的内容,我将其替换为 non_english 数组中的翻译。对于完全匹配,所有这些都 100% 有效。
但是对于部分匹配,我需要使用 .match 命令,它允许部分匹配。
我搜索完全匹配的代码是这样的:
var found = $.inArray(value,en_lang);
然后,如果找到值,则替换文本。这种方法很快,我喜欢它。
但是要进行部分单词/短语匹配,我必须使用这个循环代码。
// loop thru language arrays
for (var x = en_count; x > 0; x--) {
// assign current from/to variables for replace
var from = en_lang[x];
var to = other_lang[x];
// if value match do translation
if (value.match(from)) {
content(node, value.replace(from, to));
}
// mark this node as translated
if ($.browser.msie == 'false') {
$(node).data('translated', 'yes');
}
}
这可以完成工作,但速度很慢。经过大量研究,我发现我可以通过 join 命令将英文数组转换为基于列表的字符串。
但我无法想出一个函数来搜索此列表以查找部分匹配,并返回列表中的位置。
我正在尝试这个 2006 年创建的旧 js 函数。但我不知道如何正确地恢复位置。
function listfind(list, value, delimiters) {
if (!delimiters) {
var delimiters = ','
}
_TempListSplitArray = list.split(delimiters)
var FoundIdx = 0;
for (i = 0; i < _TempListSplitArray.length; i++) {
if (_TempListSplitArray[i] == value) {
FoundIdx = i + 1;
break
}
if (value.match(_TempListSplitArray[i])) {
FoundIdx = i + 1;
break
}
}
return FoundIdx
}
感谢您的时间。