0

フォームに入力されたファイルからファイル名を取得し、不要な詳細を取り除いた後、テキスト フィールドに入力するスクリプトを作成しました。

私がアップロードするすべてのファイルは、キーワードでラベル付けされます

これは Chrome 拡張機能用であるため、X ブラウザーのサポートは必要ありません。

var filename = $("uploaded_data").val().toLowerCase();

filename = filename.replace(/_/g, " ").replace(/-/g, " ").replace("c:\\fakepath\\", "");

    type_index[1] = filename.indexOf("red"); 
    type_index[2] = filename.indexOf("blue");
    type_index[3] = filename.indexOf("green");
    type_index[4] = filename.indexOf("purple");
    type_index[5] = filename.indexOf("magenta");

    for (i=0 ; i > -1 ; i++ ) {
        if (type_index[i] > -1)
        {

        filename_final = filename.substring(type_index[i]);
        break;
        }
    }

$("#material_title").val(filename_final);

このコードは正常に動作しますが、色をファイル名の一部にしたくありません。たとえば、入力ファイルの名前が「test_red_name_low.jpg」の場合、テキスト フィールドは「name low.jpg」にする必要があります。現在、上記のコードは「red name low.jpg」を出力します。また、ファイル名が「this_is_a_test-blue_happy.jpg」の場合、「happy.jpg」が出力されるはずです。

type_index 配列は最終的に非常に多数の値を保持するため、置換は非常に長く複雑な方法になります。

これを回避する方法について何か提案はありますか?

4

1 に答える 1

1

この正規表現はそれを行います。

// add as many colors you like here. 
var colors = ['red','green', 'blue', 'magenta', 'purple'];
filename = filename.replace(/-|_|c:\\fakepath\\/g,' ')
    .replace(new RegExp("("+colors.join("|")+")", "g"), " ")
    .replace(/.*  /,'').trim()
于 2012-12-15T17:14:18.873 に答える