2

私は英語のフレーズの配列をループしていますが、現在のテキストノードと一致するものが見つかった場合は、それを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
}

お時間をいただきありがとうございます。

4

1 に答える 1

0

Javascriptにはforeachタイプのシステムがありますが、それでもループに基づいています

var array = ['hello', 'world'];
for(var key in array){
  alert(array[key]);
}

これは、配列をループするのに最適ですが、この方法はすべてオブジェクトで機能します

var obj = {'one':'hello', 'two':'world'];
for(var key in obj){
   alert("key: "+key+" value: "+obj[key]);
}

あなたの質問に対するコメントのために更新されましたあなたはあなたが知っているテキストを単に置き換えることができます

var str = "hello World";
str = str.replace("hello", "Bye bye");
alert(str);
于 2011-02-23T15:57:04.700 に答える