Votre défi est de trouver l'extension de fichier d'un nom de fichier fourni:
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
Vous devez obtenir le texte de la dernière .
ou de la dernière .
à la fin de la chaîne. La première correspondance de groupe de capture de l'expression régulière /\.([^.]+)$/
fonctionne, tout comme le fractionnement de l'entrée sur .
s et le retour de la dernière.
Le nom du fichier en contiendra toujours au moins un .
, mais il peut en contenir plusieurs .
. (voir exemples)
L'entrée correspondra toujours ^[.a-zA-Z0-9^!\[\]{}@$%+=]+$
.
Réponses:
Rétine , 5 octets
Remplace tout et un point par rien du tout.
Essayez-le en ligne!
la source
JavaScript (ES6), 19 octets
Renvoie le nom de fichier complet lorsqu'il n'y a pas d'extension de fichier. Je suppose que c'est un comportement non défini acceptable .
la source
Mathematica,
1322 octetsEdit: Je ne sais pas comment j'ai raté le
".bashrc"
cas de test. Merci à Artyer de m'avoir gardé honnête.Si l'entrée correspond
\.[^.]+
, alorsFileExtension
renvoie simplement la chaîne vide, donc nous ajoutons la lettrea
. Dans tous les autres cas, le préfixea
n'affecte pas la sortie deFileExtension
.la source
.ext
n'aboutirait à rien, ce qui échoue pour.bashrc
avoir besoin de produirebashrc
(il échoue en mathématiques )Create Built-in XXXXXXXX
.Pure bash, 13
Essayez-le en ligne .
la source
Japt , 3 octets
2 octets de code, +1 pour le
h
drapeau.Explication:
Essayez-le en ligne!
la source
05AB1E , 4 octets
Essayez-le en ligne! ou essayez tous les tests
la source
fonction c, 21
Essayez-le en ligne .
la source
rindex
pour enregistrer un octet.rindex()
auparavant - merci pour le conseil!PHP, 21 octets
Essayez-le en ligne!
est une expression plus courte pour
pathinfo
PHP, 27 octets
exploser
Essayez-le en ligne!
PHP <7,0, 26 octets
scission obsolète
la source
pathinfo()
base pourrait être<?=pathinfo($argn,4);
.Cypher Neo4j , 24 octets
L'entrée se fait dans un param (
i
), probablement le seul moyen pour Cypher de prendre l'entrée. Assez simple. Cypher n'a jamais été utilisé sur PPCG auparavantla source
Marque GNU , 12 octets
Ne pas utiliser de fonction intégrée, 27 octets:
la source
Lot, 10 octets
Étrangement compétitif pour une fois.
la source
V ,
5, 3 octetsPuisqu'une plus grande partie de cette réponse n'est pas imprimable qu'imprimable, voici un hexdump:
Essayez-le en ligne!
Cela utilise l'algorithme de Jan Dvorak , il se trouve que c'est un encodage plus efficace.
Explication:
Ancienne solution:
la source
®
signifie suivi d'un point? Lol c'est bizarre.sed , 8 octets
Essayez-le en ligne!
la source
Gelée , 4 octets
Un lien monadique prenant le nom du fichier et renvoyant l'extension sans interligne
.
.Essayez-le en ligne!
Comment?
Fait littéralement ce qui a été demandé ...
la source
Aller , 85 octets
Aller est ... gênant.
Essayez-le en ligne!
Un exemple de parenthèses du code:
la source
()(){([])([()])}
- est-ce un Brain-Flak valide?2
sans instructions / commandes ou quoi que ce soit ou une boucle infinie qui alloue continuellement plus de mémoire, selon l'entrée.filepath.Ext
fera économiser quelques bouchéesJavaScript (ES6),
333128 octetsLa modification des spécifications dans les commentaires supprime la nécessité de
+1
.-3 octets grâce à nderscore
la source
slice
exécution de chaîne de modèle et:s=>s.slice(s.lastIndexOf`.`)
Lisp commun, 57 octets
Essayez-le en ligne (ajouté quelques octets pour appeler cette fonction anonyme et afficher la chaîne renvoyée)
Explication
Je reçois une sous-chaîne de chaîne inversée, à partir de 0, se terminant sur ce
la source
Gema, 3 personnages
Exemple d'exécution:
la source
MATL,
87 octetsEssayez-le sur MATL Online !
Explication
la source
Javascript (ES5), 38 octets
la source
C #,
3341 octetsModifiez comme suggéré:
la source
using Sytem.Linq;
dans votre nombre d'octetsa=>a.Split('.').Last();
retour implicite est également plus courtPath
...Awk,
1413 caractères( Code de
109 caractères + option de ligne de commande de 4 caractères.)Grâce à:
Exemple d'exécution:
la source
;
. et juste FYI,awk '{$0=$NF}1
fonctionne, aucune option de ligne de commande nécessaire. Oh ... je dois être fatigué. Je vois ce que tu as fait là. Vous avez besoin de l'option de ligne de commande.;
là.Lua ,
5330 octetsRemplace tout jusqu'au dernier
.
par la chaîne vide''
.Double parenthèse pour sélectionner uniquement la première valeur de retour de
gsub
.Tous les conseils de golf sont les bienvenus, je suis rouillé à Lua ...
Essayez-le en ligne!
la source
Java 8,
5227 octetsEssayez-le ici.
Remplacez tout avant le dernier point (et le point lui-même) par rien.
C'est plus court que d'utiliser split (
s->s.split("\\.")[s.split("\\.").length-1];
) ou substring (s->s.substring(s.lastIndexOf('.'));
).la source
Taxi , 1397 octets
Essayez-le en ligne!
Le taxi n'a pas de fonction inverse, donc ce ballon a volé assez rapidement. La logique est:
la source
Vim, 5 octets
Explication: rechercher la dernière
.
ligne, supprimer tout avantUne autre approche, plus longue, mais à mon avis toujours intéressante avec 9 octets (remarquez la nouvelle ligne de fin)
Celui-ci fonctionne de manière similaire, 5 octets (encore une fois, la nouvelle ligne de fin):
la source
Brain-Flak , 84 octets
Comprend +2 pour
-rc
Essayez-le en ligne!
la source
Japt ,
65 octetsEssayez-le en ligne!
Explication
la source
o
à la place degJ
. (J'ai appris ce truc de @obarakon il y a quelque temps)jq,
1514 caractères(
11code de 10 caractères + 4 options de ligne de commande de caractères.)Exemple d'exécution:
Test en ligne
la source
Octave, 24 octets
Crée une fonction anonyme nommée
ans
qui peut accepter une chaîne en entréeDémo en ligne
la source