2012-12-15 113 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中查找最高值。然后在该索引之后找到第一个空格。将其存储为新索引。在这个新索引之后取一个子串。 –