我正在循環訪問英語短語數組,如果我找到與當前文本節點匹配的匹配項,則將其替換爲非英語數組中的翻譯項。所有這些對完全匹配都是100%。如何避免通過數組循環來找到部分匹配?
但是對於部分匹配,我需要使用.match命令,它允許部分匹配。
我的代碼搜索精確匹配是這樣的:
VAR找到= $ .inArray(值,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
}
謝謝你的時間。
' :包含'在jquery句柄局部搜索http://api.jquery.com/contains-selector/唯一我能想到的是,它可能無法與非元素很好地工作,所以你可以有一個想法, http://stackoverflow.com/questions/1789945/javascript-string-contains希望它有幫助 – Val 2011-02-23 15:50:52
但是,這是一個選擇器,我已經有了我需要的元素,現在我需要搜索當前文本節點內的部分匹配。 – crosenblum 2011-02-23 15:53:05
是不是有一個原因,你不能只是跳過整個數組的分裂/循環,只是在大字符串上用正則表達式進行查找替換? – epascarello 2011-02-23 16:01:55