将文件名和文件类型放在一个数组中
Put the filename and the filetype in a array
我想将文件名和文件类型放在一个数组中,我知道答案(split
(,但我不知道如何在扩展名开始之前寻找最后一个点。
示例:Funny - SMS 02.jpg
将在一个数组中获取Funny - SMS 02
,在另一个数组中jpg
。但是当我尝试拆分已经包含点的文件的名称时,麻烦就开始了。 例如,Funny - When you see it....jpg
打印Funny - When you see it
fname[0]
,jpg
fname[1]
。
如何使其打印Funny - When you see it...
fname[0]
和jpg
fname[1]
?
提前谢谢。
function getFnameExt(filename) {
var parts = filename.split('.'), ext = parts.pop(), fname = parts.join('.');
return [ fname, ext ];
}
console.log( getFnameExt("Funny - When you see it....jpg") );
var array = [];
var s = "Funny - When you see it....jpg";
var lastDot = s.lastIndexOf(".");
array[0] = s.substring(0, lastDot);
array[1] = s.substring(lastDot + 1);
alert(array[0] + "---" + array[1]);
对于这些类型的任务,拆分通常很麻烦。正则表达式功能更强大:
var matches = /^(.*)'.([^.]*)$/g.exec("Funny - When you see it....jpg");
matches.shift();
// matches:
// ["Funny - When you see it...", "jpg"]
这会将字符串与正则表达式匹配,从而生成一个包含三个元素的数组。第一个是不需要的完整匹配,所以转移它。
^ begin of string
.* any amount of any character
'. a dot
[^.]* any amount of any character except a dot
$ end of string
对于字符串锚点的开头/结尾,.*
必须包含最后一个点之前的所有字符。
(
和 )
表示一个组,该组将匹配的子字符串添加到数组中。
fname = "Funny - When you see it....jpg"
parts = fname.split(/'.(?=[^.]*$)/)
// parts=["Funny - When you see it...", "jpg"]
?=
被称为"展望",基本上意味着"跟随"。所以,上面写着:"如果后面没有点,则用点分割"。
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何在PHP数组中加载下一个youtube
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个