2011-05-10 24 views
17

¿Alguien sabe una manera fácil de cambiar una extensión de archivo en Javascript?¿Cómo puedo cambiar la extensión de archivo con javascript

Por ejemplo, tengo una variable con "first.docx" pero necesito cambiarla a "first.html".

+0

es esto para la tarea o algo? – used2could

+3

Esto no es para la tarea ... El problema es que soy totalmente nuevo en Javascript, así que algo a lo que no estoy acostumbrado :) Pero necesitaba terminar un sistema web analizador ... Se traduce de doc, docx, pdf, rtf o txt to html ... – JLuiz

Respuesta

34

Esto cambiará la cadena que contiene el nombre del archivo;

file = file.substr(0, file.lastIndexOf(".")) + ".htm"; 
+0

¡Perfecto! ¡Resolvió mi problema! – JLuiz

+4

Tenga en cuenta que hay un caso de borde si usa esto en un nombre de archivo que aún no tiene una extensión. – hippietrail

+0

¿cómo lograré establecer el formato de archivo si estoy descargando desde un sitio web que no proporciona un archivo típico? es solo una url. es decir, ** https: //r5---sn-uxa0n-t8gs.googlevideo.com/videoplayback? ipbits = 0 & initcwndb ... D134213BA9465CB74DFD36CDE47BF.102638C4A9F3ACA357F79EE747DD5F49F1E0F0DE ** – Anthony

-2
var file = "first.docx"; 
file = file.split("."); 
file = file[0]+".html"; 
+0

Esta parece ser una forma bastante compleja de resolver el problema. – ChaosPandion

+2

No es complejo, dividir es muy fácil de entender, aunque puede hacer más trabajo del que necesita. Sin embargo, esta solución no tiene en cuenta los períodos en el nombre de archivo –

5
file = file.replace(/\.[^\.]+$/, '.html'); 
+0

El problema es: no sé qué extensión tiene el archivo de entrada – JLuiz

+0

@Mobster: consulte la actualización para obtener una solución alternativa. – ChaosPandion

+0

¿Qué sucede si el nombre del archivo era "file.name.docx"? – JLuiz

0

Probablemente no reciba muchos votos a favor, pero no pude resistirme.

Este código se ocupará del caso límite donde un archivo puede no tener ya una extensión (en cuyo caso lo agregará). Utiliza el "tilde trick"

function changeExt (fileName, newExt) { 
    var _tmp 
    return fileName.substr(0, ~(_tmp = fileName.lastIndexOf('.')) ? _tmp : fileName.length) + '.' + newExt 
} 
Cuestiones relacionadas