File extension is in extensions list: Difference between revisions

Content added Content deleted
(Added Algol 68)
Line 732: Line 732:
=={{header|Racket}}==
=={{header|Racket}}==


<lang racket>
{{update|Racket}}
#lang racket


(define extensions '(".zip"
<lang racket>#lang racket/base
".rar"
(require (only-in srfi/13 string-suffix-ci?)
(only-in racket/format ~a))
".7z"
".gz"
".archive"
".a##"
".tar.bz2"))


(define filenames '("MyData.a##"
(define ((in-extensions-list? extns) f)
"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"))


(for ((f (in-list file-names)))
(define (file-extension-in-list? f lst)
(let ([lcase (string-downcase f)])
(printf "~a ~a~%" (~a #:width 20 f) (or (in-e.g.-extns-list? f) "[NO EXTENSION]")))</lang>
(ormap (lambda (x) (equal? (string-right lcase (string-length x)) x)) extensions)))
(for ((f (in-list filenames)))
(printf "~a ~a~%" (~a #:width 20 f) (file-extension-in-list? f extensions)))
</lang>
{{out}}
{{out}}
<pre>
<pre>c: [NO EXTENSION]
txt [NO EXTENSION]
MyData.a## #t
text.txt .txt
MyData.tar.Gz #t
text.TXT .txt
MyData.gzip #f
test.tar.gz .gz
MyData.7z.backup #f
test/test2.exe .exe
MyData... #f
test [NO EXTENSION]
MyData #f
MyData_v1.0.tar.bz2 #t
foo.c .c
foo.C .c
MyData_v1.0.bz2 #f
</pre>
foo.C++ .c++
foo.c# [NO EXTENSION]
foo.zkl [NO EXTENSION]
document.pdf .pdf</pre>


=={{header|REXX}}==
=={{header|REXX}}==