Ihre Herausforderung besteht darin, die Dateierweiterung eines angegebenen Dateinamens zu finden:
hi.txt -> txt or .txt
carrot.meme -> meme or .meme
lol (undefined behavior)
what..is..this..file -> file or .file
.bashrc -> bashrc or .bashrc
[email protected][]h -> h0wC[]h or .h0wC[]h
agent.000 -> 000 or .000
Sie müssen den Text vom letzten .
oder nach dem letzten .
bis zum Ende der Zeichenfolge abrufen. Die erste Erfassungsgruppenübereinstimmung des regulären Ausdrucks /\.([^.]+)$/
funktioniert ebenso wie die Aufteilung der Eingabe auf .
s und die Rückgabe der letzten.
Der Dateiname enthält immer mindestens einen .
, kann jedoch mehrere enthalten .
. (siehe Beispiele)
Die Eingabe wird immer übereinstimmen ^[.a-zA-Z0-9^!\[\]{}@$%+=]+$
.
Antworten:
Netzhaut , 5 Bytes
Ersetzt alles und einen Punkt durch gar nichts.
Probieren Sie es online aus!
quelle
JavaScript (ES6), 19 Byte
Gibt den vollständigen Dateinamen zurück, wenn keine Dateierweiterung vorhanden ist. Ich nehme an, dies ist ein akzeptables undefiniertes Verhalten .
quelle
Mathematica,
1322 BytesBearbeiten: Nicht sicher, wie ich den
".bashrc"
Testfall verpasst habe. Vielen Dank an Artyer, der mich ehrlich gehalten hat.Wenn die Eingabe übereinstimmt
\.[^.]+
, wirdFileExtension
nur die leere Zeichenfolge zurückgegeben, sodass der Buchstabe vorangestellt wirda
. In jedem anderen Fall wirkt sicha
das Voranstellen nicht auf die Ausgabe von ausFileExtension
.quelle
.ext
dies zu nichts führen würde, was fehlschlägt, wenn.bashrc
eine Ausgabe erforderlich istbashrc
(es schlägt in Mathematik fehl )Create Built-in XXXXXXXX
.Pure Bash, 13
Probieren Sie es online aus .
quelle
Japt , 3 Bytes
2 Byte Code, +1 für das
h
Flag.Erläuterung:
Probieren Sie es online aus!
quelle
05AB1E , 4 Bytes
Probieren Sie es online aus! oder Alle Tests ausprobieren
quelle
c Funktion, 21
Probieren Sie es online aus .
quelle
rindex
ein Byte speichern.rindex()
- danke für den Tipp!PHP, 21 Bytes
Probieren Sie es online aus!
ist ein kürzerer Ausdruck für
pathinfo
PHP, 27 Bytes
explodieren
Probieren Sie es online aus!
PHP <7,0, 26 Bytes
veralteter Split
quelle
pathinfo()
Basierte könnte sein<?=pathinfo($argn,4);
.Neo4j Cypher , 24 Bytes
Die Eingabe erfolgt in param (
i
), wahrscheinlich die einzige Möglichkeit für cypher, Eingaben vorzunehmen . Ziemlich einfach. Cypher wurde noch nie zuvor für PPCG verwendetquelle
GNU Make , 12 Bytes
Keine eingebaute, 27 Bytes:
quelle
Stapel, 10 Bytes
Ausnahmsweise einmal wettbewerbsfähig.
quelle
V ,
5, 3 BytesDa mehr von dieser Antwort nicht druckbar als druckbar ist, ist hier ein Hexdump:
Probieren Sie es online aus!
Dies verwendet den Algorithmus von Jan Dvorak , es ist einfach eine effizientere Codierung davon.
Erläuterung:
Alte Lösung:
quelle
®
heißt gefolgt von einem Punkt? Lol das ist komisch.sed , 8 Bytes
Probieren Sie es online aus!
quelle
Gelee , 4 Bytes
Ein monadischer Link, der den Dateinamen übernimmt und die Erweiterung ohne führenden Namen zurückgibt
.
.Probieren Sie es online aus!
Wie?
Tut buchstäblich was gefragt wurde ...
quelle
Los , 85 Bytes
Go ist ... mühsam.
Probieren Sie es online aus!
Ein Beispiel für Klammern aus dem Code:
quelle
()(){([])([()])}
- Ist es ein gültiger Brain-Flak?2
ohne Anweisungen / Befehle oder irgendetwas oder eine Endlosschleife, die je nach Eingabe kontinuierlich mehr Speicher zuweist.filepath.Ext
JavaScript (ES6),
333128 ByteDurch die Änderung der Spezifikation in Kommentaren entfällt die Notwendigkeit
+1
.-3 Bytes dank nderscore
quelle
slice
und Vorlage String Ausführung:s=>s.slice(s.lastIndexOf`.`)
Common Lisp, 57 Bytes
Probieren Sie es online aus (einige Bytes wurden hinzugefügt, um diese anonyme Funktion aufzurufen und die zurückgegebene Zeichenfolge anzuzeigen).
Erläuterung
Ich erhalte einen Teilstring eines umgekehrten Strings, der bei 0 beginnt und damit endet
quelle
Gema, 3 Zeichen
Probelauf:
quelle
MATL,
87 BytesProbieren Sie es bei MATL Online aus !
Erläuterung
quelle
Javascript (ES5), 38 Bytes
quelle
C #,
3341 BytesBearbeiten wie vorgeschlagen:
quelle
using Sytem.Linq;
in Ihrea=>a.Split('.').Last();
implizite Rückkehr ist kürzerPath
...Awk,
1413 Zeichen(
109 Zeichen Code + 4 Zeichen Befehlszeilenoption.)Dank an:
Probelauf:
quelle
;
. und nur zu Ihrer Information,awk '{$0=$NF}1
funktioniert, keine Befehlszeilenoption erforderlich. Oh ... ich muss müde sein. Ich sehe, was du dort getan hast. Sie benötigen die Befehlszeilenoption.;
dort abgelegt habe .Lua ,
5330 BytesErsetzt alles bis zum letzten
.
durch die leere Zeichenfolge''
.Doppelte Klammer, um nur den ersten Rückgabewert von auszuwählen
gsub
.Alle Golftipps sind willkommen, ich bin rostig in Lua ...
Probieren Sie es online aus!
quelle
Java 8,
5227 BytesProbieren Sie es hier aus.
Ersetzen Sie alles vor dem letzten Punkt (und dem Punkt selbst) durch nichts.
Dies ist kürzer als bei Verwendung von split (
s->s.split("\\.")[s.split("\\.").length-1];
) oder substring (s->s.substring(s.lastIndexOf('.'));
).quelle
Taxi , 1397 Bytes
Probieren Sie es online aus!
Das Taxi hat keine Rückwärtsfunktion, daher stieg diese ziemlich schnell an. Die Logik lautet:
quelle
Vim, 5 Bytes
Erläuterung: Finde die letzte
.
Zeile und lösche alles davorEin weiterer, längerer, aber meiner Meinung nach immer noch interessanter Ansatz mit 9 Bytes (beachten Sie die nachfolgende neue Zeile)
Dieser funktioniert ähnlich, 5 Bytes (wieder nachfolgende neue Zeile):
quelle
Brain-Flak , 84 Bytes
Beinhaltet +2 für
-rc
Probieren Sie es online aus!
quelle
Japt ,
65 BytesProbieren Sie es online aus!
Erläuterung
quelle
o
anstelle von verwendengJ
. (Habe diesen Trick vor einiger Zeit von @obarakon gelernt)jq,
1514 Zeichen(
1110 Zeichen Code + 4 Zeichen Befehlszeilenoptionen.)Probelauf:
Online-Test
quelle
Oktave, 24 Bytes
Erstellt eine anonyme Funktion mit dem Namen,
ans
die eine Zeichenfolge als Eingabe akzeptieren kannOnline-Demo
quelle