0

如果内容只是文本还是图像 URL,我会搜索以检测字符串。我的检测基于文件类型,但我不知道如何检测多种文件类型……</p>

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

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

4

2 回答 2

1

只需在数组上使用 indexOf

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

content.slice(-4)返回最后 4 个字符content

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

于 2013-01-21T13:35:20.453 回答
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>';

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

于 2013-01-21T13:48:32.117 回答