Hier ist eine Version, die ich mit split geschrieben habe:
%Vor% Dies transformiert z.B. foo.bar.coffee
in foo.bar.js
.
Was ich mag:
indexOf()
angewiesen
Was ich nicht mag:
Wie kann ich eine noch einfachere / einfachere Version schreiben?
UPDATE: Gute Antworten unten! Kurz gesagt:
eine etwas kürzere Syntax für den ursprünglichen Ansatz (Eckfälle nicht abgedeckt) lautet:
fileName.split('.').init :+ "js" mkString "."
Ich fürchte, Sie müssen es tatsächlich länger machen , um das wahrscheinlich sinnvollste robuste Ding zu machen:
%Vor%Irgendwie unerwartet, den Namen Ihrer Datei zu verlieren (zumindest wenn Sie ein Endbenutzer sind)!
Lass uns Regex ausprobieren:
%Vor%Habe den Dateinamen nicht verloren, aber es gibt auch keine Erweiterung. Ack.
Lass es uns reparieren:
%Vor%Oder mit Regex:
%Vor%(Beachten Sie das unterschiedliche Verhalten im Eckfall, bei dem der Dateiname mit Punkten endet.)
Sehr einfach mit lastIndexOf, und arbeiten mit Dateinamen, die mehr als einen Punkt enthalten
%Vor%Ergebnis ist foo.bar.js
Also, ich werde hier Geschwindigkeit anstreben. Wie dem auch sei, substring
ist eine konstante Zeit, weil die Zeichenfolge einfach nicht kopiert wird. Also,
Dies verwendet eine Schließung, die es ein wenig verlangsamen wird. Schneller:
%Vor% BEARBEITEN: Wie dem auch sei, kopiert Java jetzt die Zeichenfolge in substring
.
Tags und Links scala