Su desafío es encontrar la extensión de archivo de un nombre de archivo proporcionado:
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
Debe obtener el texto desde el último .
o después del último .
hasta el final de la cadena. La primera coincidencia de grupo de captura de la expresión regular /\.([^.]+)$/
funciona, y también lo hace dividir la entrada en .
sy devolver la última.
El nombre del archivo siempre contendrá al menos uno .
, pero puede contener varios .
. (ver ejemplos)
La entrada siempre coincidirá ^[.a-zA-Z0-9^!\[\]{}@$%+=]+$
.
Respuestas:
Retina , 5 bytes
Reemplaza todo y un punto sin nada en absoluto.
Pruébalo en línea!
fuente
JavaScript (ES6), 19 bytes
Devuelve el nombre de archivo completo cuando no hay extensión de archivo. Supongo que este es un comportamiento indefinido aceptable .
fuente
Mathematica,
1322 bytesEditar: No estoy seguro de cómo me perdí el
".bashrc"
caso de prueba. Gracias a Artyer por mantenerme honesto.Si la entrada coincide
\.[^.]+
,FileExtension
solo devuelve la cadena vacía, por lo que anteponemos la letraa
. En cualquier otro caso, el pre-pendientea
no afecta la salida deFileExtension
.fuente
.ext
no resultaría en nada, lo que falla por la.bashrc
necesidad de salirbashrc
(falla en matemáticas )Create Built-in XXXXXXXX
.Puro bash, 13
Pruébalo en línea .
fuente
Japt , 3 bytes
2 bytes de código, +1 para la
h
bandera.Explicación:
Pruébalo en línea!
fuente
05AB1E , 4 bytes
Pruébalo en línea! o probar todas las pruebas
fuente
función c, 21
Pruébalo en línea .
fuente
rindex
para guardar un byte.rindex()
antes, ¡gracias por el consejo!PHP, 21 bytes
Pruébalo en línea!
es una expresión más corta para
pathinfo
PHP, 27 bytes
explotar
Pruébalo en línea!
PHP <7.0, 26 bytes
división en desuso
fuente
pathinfo()
basado podría ser<?=pathinfo($argn,4);
.Neo4j Cypher , 24 bytes
La entrada está en un parámetro (
i
), probablemente la única forma en que Cypher puede tomar la entrada. Muy claro. Cypher nunca se ha utilizado en PPCG antesfuente
Marca GNU , 12 bytes
Sin usar un incorporado, 27 bytes:
fuente
Lote, 10 bytes.
Extrañamente competitivo por una vez.
fuente
V ,
5, 3 bytesComo más de esta respuesta no se puede imprimir que imprimir, aquí hay un hexdump:
Pruébalo en línea!
Esto usa el algoritmo de Jan Dvorak , simplemente resulta ser una codificación más eficiente.
Explicación:
Vieja solución:
fuente
®
significa seguido de un punto? Jajaja eso es raro.sed , 8 bytes
Pruébalo en línea!
fuente
Jalea , 4 bytes
Un enlace monádico que toma el nombre del archivo y devuelve la extensión sin encabezado
.
.Pruébalo en línea!
¿Cómo?
Literalmente hace lo que se le pidió ...
fuente
Go , 85 bytes
Ir es ... problemático.
Pruébalo en línea!
Una muestra de paréntesis del código:
fuente
()(){([])([()])}
- ¿Es un Brain-Flak válido?2
sin instrucciones / comandos ni nada o un bucle infinito que asigna continuamente más memoria, dependiendo de la entrada.filepath.Ext
le ahorrará algunos bocadosJavaScript (ES6),
333128 bytesEl cambio de especificación en los comentarios elimina la necesidad de
+1
.-3 bytes gracias a nderscore
fuente
slice
y ejecución de cadena de plantilla:s=>s.slice(s.lastIndexOf`.`)
Lisp común, 57 bytes
Pruébelo en línea (agregó algunos bytes para llamar a esta función anónima y mostrar la cadena devuelta)
Explicación
Obtengo una subcadena de cadena invertida, comenzando desde 0, terminando en esto
fuente
Gema, 3 personajes
Ejecución de muestra:
fuente
MATL,
87 bytes¡Pruébalo en MATL Online !
Explicación
fuente
Javascript (ES5), 38 bytes
fuente
C #,
3341 bytesEditar como se sugiere:
fuente
using Sytem.Linq;
a=>a.Split('.').Last();
retorno implícito es más cortoPath
...Awk,
1413 caracteres( Código de
109 caracteres + opción de línea de comando de 4 caracteres).Gracias a:
Ejecución de muestra:
fuente
;
. y solo para su información,awk '{$0=$NF}1
funciona, no se necesita opción de línea de comando Oh ... debo estar cansado. Veo lo que hiciste alli. Necesitas la opción de línea de comando.;
allí.Lua ,
5330 bytesReemplaza todo hasta el último
.
con la cadena vacía''
.Paréntesis doble para seleccionar solo el primer valor de retorno de
gsub
.Cualquier consejo de golf es bienvenido, estoy oxidado en lua ...
Pruébalo en línea!
fuente
Java 8,
5227 bytesPruébalo aquí.
Reemplace todo antes del último punto (y el punto mismo) con nada.
Esto es más corto que usar split (
s->s.split("\\.")[s.split("\\.").length-1];
) o substring (s->s.substring(s.lastIndexOf('.'));
).fuente
Taxi , 1397 bytes
Pruébalo en línea!
El taxi no tiene una función inversa, por lo que se disparó rápidamente. La lógica es:
fuente
Vim, 5 bytes
Explicación: encuentre el último
.
en la línea, elimine todo antesOtro enfoque más largo, pero en mi opinión sigue siendo interesante con 9 bytes (observe la nueva línea final)
Este funciona de manera similar, 5 bytes (nuevamente, siguiendo una nueva línea):
fuente
Brain-Flak , 84 bytes
Incluye +2 para
-rc
Pruébalo en línea!
fuente
Japt ,
65 bytesPruébalo en línea!
Explicación
fuente
o
en lugar degJ
. (Aprendí ese truco de @obarakon hace un tiempo)jq,
1514 caracteres(
1110 caracteres de código + 4 caracteres de opciones de línea de comando).Ejecución de muestra:
Prueba en línea
fuente
Octava, 24 bytes
Crea una función anónima llamada
ans
que puede aceptar una cadena como entradaDemo en línea
fuente