如何从Javascript中的文件名字符串中提取扩展名?

时间:2009-03-25 10:00:21

标签: javascript

如何在变量中获取文件的File扩展名? 就像我有一个文件 1.txt 我需要 txt 部分。

10 个答案:

答案 0 :(得分:264)

适用于以下所有输入的变体:

  • "file.name.with.dots.txt"
  • "file.txt"
  • "file"
  • ""
  • null
  • undefined

将是:

var re = /(?:\.([^.]+))?$/;

var ext = re.exec("file.name.with.dots.txt")[1];   // "txt"
var ext = re.exec("file.txt")[1];                  // "txt"
var ext = re.exec("file")[1];                      // undefined
var ext = re.exec("")[1];                          // undefined
var ext = re.exec(null)[1];                        // undefined
var ext = re.exec(undefined)[1];                   // undefined

解释

(?:         # begin non-capturing group
  \.        #   a dot
  (         #   begin capturing group (captures the actual extension)
    [^.]+   #     anything except a dot, multiple times
  )         #   end capturing group
)?          # end non-capturing group, make it optional
$           # anchor to the end of the string

答案 1 :(得分:163)

使用lastIndexOf方法查找字符串中的最后一个句点,然后获取字符串的一部分:

var ext = fileName.substr(fileName.lastIndexOf('.') + 1);

答案 2 :(得分:141)

我个人更喜欢将字符串拆分为.并返回最后一个数组元素:)

var fileExt = filename.split('.').pop();

如果 filename 中没有.,则会返回整个字符串。

<强>示例:

'some_value'                                   => 'some_value'
'.htaccess'                                    => 'htaccess'
'../images/something.cool.jpg'                 => 'jpg'
'http://www.w3schools.com/jsref/jsref_pop.asp' => 'asp'
'http://stackoverflow.com/questions/680929'    => 'com/questions/680929'

答案 3 :(得分:20)

我建议使用lastIndexOf()而不是indexOf()

var myString = "this.is.my.file.txt"
alert(myString.substring(myString.lastIndexOf(".")+1))

答案 4 :(得分:12)

最好使用以下内容;一直工作!

var ext =  fileName.split('.').pop();

这将返回没有点前缀的扩展名。你可以加 ”。” + ext来检查您希望支持的扩展名!

答案 5 :(得分:2)

var x = "1.txt";
alert (x.substring(x.indexOf(".")+1));

注1:如果文件名的格式为 file.example.txt ,则无效 注意2:如果文件名的格式为 file

,则会失败

答案 6 :(得分:1)

如果您的文件有更多,这是解决方案。 (点)名称。

<script type="text/javascript">var x = "file1.asdf.txt";
var y = x.split(".");
alert(y[(y.length)-1]);</script>

答案 7 :(得分:0)

获取变量&amp;中的值然后就像这样分开它的扩展名。

var find_file_ext=document.getElementById('filename').value;
var file_ext=/[^.]+$/.exec(find_file_ext); 

这会对你有帮助。

答案 8 :(得分:0)

试试这个。可以解决你的问题。

var file_name_string = "file.name.string.png"

var file_name_array = file_name_string.split(".");
var file_extension = file_name_array[file_name_array.length - 1];

此致

答案 9 :(得分:-1)

我使用以下代码:

var fileSplit = filename.split('.');
var fileExt = '';
if (fileSplit.length > 1) {
fileExt = fileSplit[fileSplit.length - 1];
} 
return fileExt;