File extension is in extensions list: Difference between revisions
Content added Content deleted
(Added Algol 68) |
|||
Line 732: | Line 732: | ||
=={{header|Racket}}== |
=={{header|Racket}}== |
||
⚫ | |||
{{update|Racket}} |
|||
#lang racket |
|||
⚫ | |||
⚫ | |||
⚫ | |||
(require (only-in srfi/13 string-suffix-ci?) |
|||
".7z" |
|||
⚫ | |||
".archive" |
|||
⚫ | |||
".tar.bz2")) |
|||
(define filenames '("MyData.a##" |
|||
⚫ | |||
"MyData.tar.Gz" |
|||
(findf (λ (e) (string-suffix-ci? e f)) extns)) |
|||
"MyData.gzip" |
|||
"MyData.7z.backup" |
|||
"MyData..." |
|||
"MyData" |
|||
"MyData_v1.0.tar.bz2" |
|||
"MyData_v1.0.bz2")) |
|||
(define (string-right s n) |
|||
(define e.g.-extns '(".txt" ".gz" ".bat" ".c" ".c++" ".exe" ".pdf")) |
|||
(if (< (string-length s) n) |
|||
(define in-e.g.-extns-list? (in-extensions-list? e.g.-extns)) |
|||
s |
|||
(define file-names |
|||
(substring s (- (string-length s) n)))) |
|||
(list "c:" "txt" "text.txt" "text.TXT" "test.tar.gz" "test/test2.exe" |
|||
"test" "foo.c" "foo.C" "foo.C++" "foo.c#" "foo.zkl" "document.pdf")) |
|||
( |
(define (file-extension-in-list? f lst) |
||
(let ([lcase (string-downcase f)]) |
|||
⚫ | |||
(ormap (lambda (x) (equal? (string-right lcase (string-length x)) x)) extensions))) |
|||
(for ((f (in-list filenames))) |
|||
⚫ | |||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
|||
⚫ | |||
MyData.a## #t |
|||
MyData.tar.Gz #t |
|||
MyData.gzip #f |
|||
MyData.7z.backup #f |
|||
MyData... #f |
|||
MyData #f |
|||
MyData_v1.0.tar.bz2 #t |
|||
⚫ | |||
MyData_v1.0.bz2 #f |
|||
</pre> |
|||
foo.C++ .c++ |
|||
⚫ | |||
foo.zkl [NO EXTENSION] |
|||
document.pdf .pdf</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |