Aquí está una versión que escribí usando dividida:expresión Scala para reemplazar una extensión de archivo en una cadena
fileName.split('.').init ++ Seq("js") mkString "."
Esto transforma, por ejemplo, foo.bar.coffee
en foo.bar.js
.
lo que me gusta:
- que funciona
- no se basa en cosas como
indexOf()
- se siente funcional;)
Lo que no me gustan:
- no es tan corto como yo esperaría
- que podría confundir a algunos lectores
¿Cómo puedo escribir una versión aún más simple/sencillo?
ACTUALIZACIÓN: ¡Grandes respuestas a continuación! En resumen:
- parece como si mi enfoque original anterior no estaba mal aunque no cubre algunos casos de esquina, pero eso es corregible con una expresión más tiempo si se necesita para cubrir los
- otra, enfoque ligeramente más corto utiliza expresiones regulares, que serán más o menos dependiendo de sus antecedentes legible expresión regular
una sintaxis ligeramente más corto para el enfoque original (casos de esquina que no están cubiertos) lee:
fileName.split('.').init :+ "js" mkString "."
Para el registro, esto es muy sencillo para mí. –
Estoy de acuerdo con Rafe. Personalmente me gusta más que las versiones de expresiones regulares. Sin embargo, no funciona bien con nombres de archivo que no tienen extensión. Puede deshacerse de '++ Seq (" js ")' reemplazándolo por ': +" js "', por cierto. – Madoc
Tenga en cuenta que, según lo que desee hacer, los archivos con doble extensión no se tratan "correctamente", p. 'x.tar.gz' se convierte en' x.tar.js' – Raphael