Seu desafio é encontrar a extensão do arquivo de um nome de arquivo fornecido:
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
Você deve obter o texto do último .
ou do último .
até o final da string. A primeira correspondência de grupo de captura da expressão regular /\.([^.]+)$/
funciona, assim como dividir a entrada em se .
retornar a última.
O nome do arquivo sempre conterá pelo menos um .
, mas pode conter vários .
. (veja exemplos)
A entrada sempre corresponderá ^[.a-zA-Z0-9^!\[\]{}@$%+=]+$
.
Respostas:
Retina , 5 bytes
Substitui tudo e um ponto por nada.
Experimente online!
fonte
JavaScript (ES6), 19 bytes
Retorna o nome do arquivo completo quando não há extensão de arquivo. Suponho que esse seja um comportamento indefinido aceitável .
fonte
Mathematica,
1322 bytesEdit: Não tenho certeza de como eu perdi o
".bashrc"
caso de teste. Agradeço a Artyer por me manter honesto.Se a entrada corresponder
\.[^.]+
,FileExtension
basta retornar a string vazia, portanto, acrescentamos a letraa
. Em qualquer outro caso, a adiçãoa
não afeta a saída deFileExtension
.fonte
.ext
resultaria em nada, o que failes para.bashrc
a necessidade de saídabashrc
(Ele falhar em Mathics )Create Built-in XXXXXXXX
.Festa pura, 13
Experimente online .
fonte
Japonês , 3 bytes
2 bytes de código, +1 para o
h
sinalizador.Explicação:
Experimente online!
fonte
05AB1E , 4 bytes
Experimente online! ou Experimente todos os testes
fonte
função c, 21
Experimente online .
fonte
rindex
para salvar um byte.rindex()
antes - obrigado pela dica!PHP, 21 bytes
Experimente online!
é uma expressão mais curta para
pathinfo
PHP, 27 bytes
explodir
Experimente online!
PHP <7.0, 26 bytes
divisão preterida
fonte
pathinfo()
baseado poderia ser<?=pathinfo($argn,4);
.Cifra Neo4j , 24 bytes
A entrada está em um parâmetro (
i
), provavelmente a única maneira de o cypher receber a entrada. Bem direto. O Cypher nunca foi usado em PPCG antesfonte
Marca GNU , 12 bytes
Não usando um builtin, 27 bytes:
fonte
Lote, 10 bytes
Estranhamente competitivo pela primeira vez.
fonte
V ,
5, 3 bytesComo mais desta resposta é imprimível do que imprimível, aqui está um hexdump:
Experimente online!
Isso usa o algoritmo de Jan Dvorak , por acaso é uma codificação mais eficiente.
Explicação:
Solução antiga:
fonte
®
significa seguido por um ponto? Lol isso é estranho.sed , 8 bytes
Experimente online!
fonte
Gelatina , 4 bytes
Um link monádico que pega o nome do arquivo e retorna a extensão sem avanço
.
.Experimente online!
Quão?
Literalmente faz o que foi pedido ...
fonte
Go , 85 bytes
Ir é ... problemático.
Experimente online!
Uma amostra de parênteses do código:
fonte
()(){([])([()])}
- é um Brain-Flak válido?2
sem instruções / comandos ou qualquer coisa ou um loop infinito que aloca continuamente mais memória, dependendo da entrada.filepath.Ext
vai poupar algumas mordidasJavaScript (ES6),
333128 bytesA alteração de especificação nos comentários elimina a necessidade
+1
.-3 bytes graças a nderscore
fonte
slice
execução de cadeia de caracteres e modelo:s=>s.slice(s.lastIndexOf`.`)
Lisp comum, 57 bytes
Experimente online (adicionou alguns bytes para chamar essa função anônima e exibir a string retornada)
Explicação
Eu recebo substring de string invertida, começando em 0, terminando neste
fonte
Gema, 3 caracteres
Exemplo de execução:
fonte
MATL,
87 bytesExperimente no MATL Online !
Explicação
fonte
Javascript (ES5), 38 bytes
fonte
C #,
3341 bytesEdite conforme sugerido:
fonte
using Sytem.Linq;
na sua contagem de bytesa=>a.Split('.').Last();
retorno implícito é mais curtoPath
...Awk,
1413 caracteres( Código de
109 caracteres + opção de linha de comando de 4 caracteres.)Graças a:
Exemplo de execução:
fonte
;
. e apenas para sua informação,awk '{$0=$NF}1
funciona, nenhuma opção de linha de comando é necessária. Oh ... eu devo estar cansado. Eu vi o que você fez lá. Você precisa da opção de linha de comando.;
lá.Lua ,
5330 bytesSubstitui tudo até o último
.
pela string vazia''
.Parêntese duplo para selecionar apenas o primeiro valor de retorno de
gsub
.Quaisquer dicas de golfe são bem-vindas, estou enferrujado na lua ...
Experimente online!
fonte
Java 8,
5227 bytesExperimente aqui.
Substitua tudo antes do último ponto (e o próprio ponto) por nada.
Isso é mais curto do que usar split (
s->s.split("\\.")[s.split("\\.").length-1];
) ou substring (s->s.substring(s.lastIndexOf('.'));
).fonte
Táxi , 1397 bytes
Experimente online!
O táxi não tem uma função reversa, então isso aumentou rapidamente. A lógica é:
fonte
Vim, 5 bytes
Explicação: find last
.
da fila, exclua tudo antes deleOutro, mais longo, mas na minha opinião ainda abordagem interessante com 9 bytes (observe a nova linha à direita)
Este funciona da mesma forma, 5 bytes (novamente, seguindo uma nova linha):
fonte
Flacidez Cerebral , 84 bytes
Inclui +2 para
-rc
Experimente online!
fonte
Japonês ,
65 bytesExperimente online!
Explicação
fonte
o
no lugar degJ
. (Aprendi esse truque de @obarakon uma volta enquanto)jq,
1514 caracteres( Código de
1110 caracteres + opções de linha de comando de 4 caracteres.)Exemplo de execução:
Teste on-line
fonte
Oitava, 24 bytes
Cria uma função anônima chamada
ans
que pode aceitar uma string como entradaDemo Online
fonte