我搜索在字符串中检测内容是否只是一个文本,或者它是一个图像URL。我的检测基于文件类型,但我不知道如何检测多种文件类型...
var wrapper = (content.indexOf(".jpg", ".jpeg", ".gif", ".png", ".bmp") != -1)
? '<img src="' + content + '" />'
: '<span>' + content + '</span>';
我知道indexOf的这种语法是错误的,但在理想情况下,这就是我搜索的内容!
答案 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
在较旧的浏览器中,您需要使用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
(无论原因可能是什么),此解决方案也可能会中断。