2012-12-15 156 views
0

我已經有了一個腳本,它從表單上的文件輸入中獲取文件名,並在剝離掉一些不需要的細節後將其放入文本字​​段中。Javascript - 刪除部分字符串。

我上傳的所有文件都會用一個關鍵詞

注意,這是一個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數組最終將保存大量的值,因此替換將是一個非常漫長的過程。

對此有何建議?

回答

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() 
+0

這很好。我唯一的保留意見是,我可能有數百種顏色,並且必須鍵入它們纔會使腳本難以管理。有沒有辦法可以使用type_index數組來選擇修剪文件名的點? – AntonCooper

+1

是的。從type_index中查找最高值。然後在該索引之後找到第一個空格。將其存儲爲新索引。在這個新索引之後取一個子串。 –