Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中检测字符串中的多个文件类型_Javascript_String_File Type - Fatal编程技术网

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

在javascript中检测字符串中的多个文件类型,javascript,string,file-type,Javascript,String,File Type,我通过搜索来检测字符串中的内容是文本还是图像URL。我的检测基于文件类型,但我不知道如何检测多个文件类型 var wrapper = (content.indexOf(".jpg", ".jpeg", ".gif", ".png", ".bmp") != -1) ? '<img src="' + content + '" />' : '<span>' + content + '</span>';

我通过搜索来检测字符串中的内容是文本还是图像URL。我的检测基于文件类型,但我不知道如何检测多个文件类型

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

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

只需在数组上使用indexOf

var wrapper = ([".jpg", ".jpeg", ".gif", ".png", ".bmp"].indexOf(content.slice(-4)) > -1)
                ? '<img src="' + content + '" />'
                : '<span>' + content + '</span>';
var wrapper=([“.jpg”、“.jpeg”、“.gif”、“.png”、“.bmp”].indexOf(content.slice(-4))>-1)
? ''
:''+内容+'';
content.slice(-4)
返回
content的最后4个字符

在较旧的浏览器上,您需要为
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>';
var content=“/test.png”,
ext=[“.jpg”、“.jpeg”、“.gif”、“.png”、“.bmp”],
res,包装器;
res=ext.filter(函数(el){return content.match(el)});
包装器=res[0]?“”:“”+内容+'';

有关更多解释,请参阅。与Fabrizio的解决方案一样,如果您的文件名包含多个
(不管是什么原因),

这将不起作用,因为内容不是文件扩展名,而是整个uri。@Christoph只是将字符串切成了最后4个字符而已!正是这样。这太简单了,但我不知道这种可能性。谢谢大家!
content.slice(-4)
->
.jpeg
=“meeeep”
.jpeg.indexOf('jpeg')仍然有效;或者使用正则表达式匹配上一个
中的子字符串是的,它应该;)但是,与indexOf一样,您需要注意兼容性——它从IE9开始就受支持,但您可以在旧版IE中使用MDN文章中提到的垫片。