Javascript 将文件名和文件类型放入数组中

Javascript 将文件名和文件类型放入数组中,javascript,arrays,filenames,Javascript,Arrays,Filenames,我想把文件名和文件类型放在一个数组中,我知道答案,但是我不知道如何在扩展开始之前查找最后一个点 示例:funcy-SMS 02.jpg将在一个数组中获得funcy-SMS 02,在另一个数组中获得jpg。但当我试图分割一个已经包含点的文件名时,麻烦就开始了。有趣-当您看到它时…jpg打印有趣-当您在例如fname[0]和fname[1]中看到它时 我怎样才能使它打印有趣-当你看到它。。。作为fname[0]和jpg作为fname[1] 提前感谢。对于此类任务,拆分通常很麻烦。正则表达式更强大:

我想把文件名和文件类型放在一个数组中,我知道答案,但是我不知道如何在扩展开始之前查找最后一个点

示例:funcy-SMS 02.jpg将在一个数组中获得funcy-SMS 02,在另一个数组中获得jpg。但当我试图分割一个已经包含点的文件名时,麻烦就开始了。有趣-当您看到它时…jpg打印有趣-当您在例如fname[0]和fname[1]中看到它时

我怎样才能使它打印有趣-当你看到它。。。作为fname[0]和jpg作为fname[1]


提前感谢。

对于此类任务,拆分通常很麻烦。正则表达式更强大:

var matches = /^(.*)\.([^.]*)$/g.exec("Funny - When you see it....jpg");
matches.shift();

// matches:
// ["Funny - When you see it...", "jpg"]
这将根据regexp匹配字符串,从而生成一个包含三个元素的数组。第一个是不需要的完全匹配,所以将其转换

^弦首 *任意字符的任意数量 \.一个点 [^.]*除点以外的任何字符的任何数量 $字符串结尾 对于字符串锚定的开始/结束,.*必须包含最后一个点之前的所有字符


并表示一个组,该组将匹配的子字符串添加到数组中。

对于此类任务,拆分通常比较麻烦。正则表达式更强大:

var matches = /^(.*)\.([^.]*)$/g.exec("Funny - When you see it....jpg");
matches.shift();

// matches:
// ["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]);
这将根据regexp匹配字符串,从而生成一个包含三个元素的数组。第一个是不需要的完全匹配,所以将其转换

^弦首 *任意字符的任意数量 \.一个点 [^.]*除点以外的任何字符的任何数量 $字符串结尾 对于字符串锚定的开始/结束,.*必须包含最后一个点之前的所有字符

并表示一个组,该组将匹配的子字符串添加到数组中

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]);
?=被称为“向前看”,基本上是指后面跟着。上面的内容是:如果后面没有点,就用点分割


?=被称为“向前看”,基本上是指后面跟着。因此,上面的内容是:如果后面没有点,就用点分割。

效果很好!:非常感谢!我会在可能的时候做标记。效果很好!:非常感谢!我会在可能的时候标记它。这和Tom的功能是一样的。我将使用你的,因为一行解决方案:谢谢@ErikEdgren:如果一个文件名根本不包含点,或者最后只有一个点,那么我们的函数会有不同的行为。对于后一种情况,我稍微修改了我的代码。好的。然后我意识到:谢谢!这与Tom的功能相同。我将使用你的,因为一行解决方案:谢谢@ErikEdgren:如果一个文件名根本不包含点,或者最后只有一个点,那么我们的函数会有不同的行为。对于后一种情况,我稍微修改了我的代码。好的。然后我意识到:谢谢!