在javascript中检测字符串中的多个文件类型

时间:2013-01-21 13:32:42

标签: javascript string file-type

我搜索在字符串中检测内容是否只是一个文本,或者它是一个图像URL。我的检测基于文件类型,但我不知道如何检测多种文件类型...

var wrapper = (content.indexOf(".jpg", ".jpeg", ".gif", ".png", ".bmp") != -1)
                ? '<img src="' + content + '" />'
                : '<span>' + content + '</span>';

我知道indexOf的这种语法是错误的,但在理想情况下,这就是我搜索的内容!

2 个答案:

答案 0 :(得分:1)

只需在数组上使用indexOf

var wrapper = ([".jpg", ".jpeg", ".gif", ".png", ".bmp"].indexOf(content.slice(-4)) > -1)
                ? '<img src="' + content + '" />'
                : '<span>' + content + '</span>';

content.slice(-4)返回content

的最后4个字符

在较旧的浏览器中,您需要使用polyfill indexOf
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

答案 1 :(得分:1)

我会选择一个更干净的解决方案 - 没有slice / indexOf或类似的东西:它根据内容测试ext数组的所有元素,并返回匹配的元素。由于应该只有一个匹配,您只需要检查第一个元素。

var content = "/test.png",
    ext = [".jpg", ".jpeg", ".gif", ".png", ".bmp"],
    res,wrapper;

res = ext.filter(function(el){return content.match(el)});

wrapper = res[0] ? '<img src="'+content+'" />' : '<span>'+content+'</span>';

有关详细说明,请参阅Array.prototype.filter on MDN。与Fabrizio的解决方案一样,如果您的文件名包含多个. /test.png.jpg(无论原因可能是什么),此解决方案也可能会中断。