Come estrarre l’estensione dalla stringa del nome file in Javascript?

come otterrei l’estensione File del file in una variabile? come se avessi un file come 1.txt ho bisogno della parte txt di esso.

Una variante che funziona con tutti i seguenti input:

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

sarebbe:

 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 

Spiegazione

 (?: # iniziare gruppo non catturante
   \.  # un punto
   (# inizia l'acquisizione del gruppo (acquisisce l'estensione effettiva)
     [^.] + # qualsiasi cosa eccetto un punto, più volte
   ) # gruppo di cattura finale
 )?  # fine gruppo non catturante, renderlo facoltativo
 $ # ancora alla fine della stringa

Utilizzare il metodo lastIndexOf per trovare l’ultimo periodo nella stringa e ottenere la parte della stringa dopo quella:

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

Personalmente preferisco dividere la stringa di . e restituisco solo l’ultimo elemento dell’array 🙂

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

Se non c’è nel nome del file viene restituita l’intera stringa.

Esempi:

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

Vorrei raccomandare l’uso di lastIndexOf () invece di indexOf ()

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

Meglio usare il seguente; Funziona sempre!

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

Ciò restituirà l’estensione senza un prefisso di punto. Puoi aggiungere “.” + ext per controllare le estensioni che desideri supportare!

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

nota 1: questo non funzionerà se il nome del file è del file file.esempio.txt
nota 2: questo fallirà se il nome del file è del file del modulo

Questa è la soluzione se il tuo file ne ha di più. (punti) nel nome.

  

ottenere il valore nella variabile e quindi separare la sua estensione proprio come questo.

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

Questo ti aiuterà.

Io uso il codice qui sotto:

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

Prova questo. Può risolvere il tuo problema.

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

Saluti