Ecco una versione che ho scritto usando divisa:espressione Scala per sostituire un'estensione di file in una stringa
fileName.split('.').init ++ Seq("js") mkString "."
Questo trasforma per esempio foo.bar.coffee
in foo.bar.js
.
Quello che mi piace:
- funziona
- non si basa su cose come
indexOf()
- ci si sente funzionale;)
Quello che non mi piace:
- non è così breve come mi piacerebbe
- potrebbe confondere alcuni lettori
Come posso scrivere una versione ancora più semplice/semplice?
AGGIORNAMENTO: ottime risposte qui sotto! In breve:
- sembra che il mio approccio originale al di sopra non era male, anche se non copre alcuni casi angolo, ma questo è risolvibile con un'espressione più a lungo se è necessario per coprire quelli
- un'altra, approccio un po 'più corto utilizza espressioni regolari, che sarà più o meno leggibile a seconda del vostro sfondo espressione regolare
una sintassi leggermente più corta per l'approccio originale (casi d'angolo non coperti) si legge:
fileName.split('.').init :+ "js" mkString "."
Per la cronaca, questo è molto semplice per me. –
Sono d'accordo con Rafe. Personalmente mi piace meglio delle versioni di espressioni regolari. Tuttavia, non funziona bene con i nomi di file che non hanno estensione. Puoi sbarazzarti di '++ Seq (" js ")' sostituendolo con ': +" js "', a proposito. – Madoc
Ricorda che, a seconda di cosa vuoi fare, i file con estensioni doppie non vengono trattati "correttamente", ad es. 'x.tar.gz' diventa' x.tar.js' – Raphael