Как извлечь расширение из строки имени файла в Javascript?

как бы получить расширение файла файла в переменной? например, если у меня есть файл как 1.txt Мне нужна часть txt.

Ответ 1

Вариант, который работает со всеми следующими входами:

  • "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

Ответ 2

Используйте метод lastIndexOf для поиска последнего периода в строке и после этого получите часть строки:

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

Ответ 3

Я лично предпочитаю разделить строку на . и просто вернуть последний элемент массива:)

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

Если в имени файла нет ., вы получите всю строку.

<сильные > Примеры:

'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'

Ответ 4

Я бы рекомендовал использовать lastIndexOf() в отличие от indexOf()

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

Ответ 5

Лучше использовать следующее; Работает всегда!

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

Это вернет расширение без префикса точки. Можете добавить "." + ext для проверки на расширения, которые вы хотите поддержать!

Ответ 6

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

note 1: это не будет работать, если имя файла имеет форму file.example.txt
примечание 2: это не удастся, если имя файла имеет вид файл

Ответ 7

Это решение, если в вашем файле больше. (точек) в названии.

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

Ответ 8

получить значение в переменной, а затем разделить его расширение так же, как это.

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

Это поможет вам.

Ответ 9

Я использую следующий код:

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

Ответ 10

Попробуйте это. Может решить вашу проблему.

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];

Привет