나는 영어 구문의 배열을 반복하고, 현재 텍스트 노드와 일치하는 항목을 찾으면이를 non_english 배열로 바꿉니다. 이 모든 것은 정확한 일치를 위해 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
}
감사합니다.
' : contains' jquery 부분 검색을 처리합니다. http://api.jquery.com/contains-selector/ 내가 생각할 수있는 유일한 점은 비 요소와 잘 작동하지 않을 수 있다는 것입니다. 그래서 이것에 대해 생각해 볼 수 있습니다. http://stackoverflow.com/questions/1789945/javascript-string-contains 도움이 되었으면 좋겠다. – Val
하지만 이것은 선택자를위한 것이므로 필요한 요소가 이미 있으므로 현재 텍스트 노드 내부의 부분 일치를 검색해야한다. – crosenblum
배열을 모두 함께 나누기/반복을 건너 뛰지 않고 큰 문자열에서 정규식으로 찾기 만하면됩니다. – epascarello