Extract file extension: Difference between revisions
Content added Content deleted
No edit summary |
(Add Forth) |
||
Line 346: | Line 346: | ||
(file-name-extension "foo.txt.~1.234~") => "txt"</lang> |
(file-name-extension "foo.txt.~1.234~") => "txt"</lang> |
||
=={{header|Forth}}== |
|||
<lang forth>: invalid? ( c -- f ) |
|||
toupper dup [char] A [char] Z 1+ within |
|||
swap [char] 0 [char] 9 1+ within or 0= ; |
|||
: extension ( addr1 u1 -- addr2 u2 ) |
|||
dup 0= if exit then |
|||
2dup over + |
|||
begin 1- 2dup <= while dup c@ invalid? until then |
|||
\ no '.' found |
|||
2dup - 0> if 2drop dup /string exit then |
|||
\ invalid char |
|||
dup c@ [char] . <> if 2drop dup /string exit then |
|||
swap - |
|||
\ '.' is last char |
|||
2dup 1+ = if drop dup then |
|||
/string ; |
|||
: type.quoted ( addr u -- ) |
|||
[char] ' emit type [char] ' emit ; |
|||
: test ( addr u -- ) |
|||
2dup type.quoted ." => " extension type.quoted cr ; |
|||
: tests |
|||
s" picture.jpg" test |
|||
s" http://mywebsite.com/picture/image.png" test |
|||
s" myuniquefile.longextension" test |
|||
s" IAmAFileWithoutExtension" test |
|||
s" /path/to.my/file" test |
|||
s" file.odd_one" test |
|||
s" IDontHaveAnExtension." test ;</lang> |
|||
{{out}} |
|||
<pre>cr tests |
|||
'picture.jpg' => '.jpg' |
|||
'http://mywebsite.com/picture/image.png' => '.png' |
|||
'myuniquefile.longextension' => '.longextension' |
|||
'IAmAFileWithoutExtension' => '' |
|||
'/path/to.my/file' => '' |
|||
'file.odd_one' => '' |
|||
'IDontHaveAnExtension.' => '' |
|||
ok</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |
||
<lang go>package main |
<lang go>package main |