File extension is in extensions list: Difference between revisions

+ D entry
(→‎{{header|Java}}: Add simpler, less-robust version)
(+ D entry)
Line 1:
{{draft task}}Given a file name and a list of extensions (including the dot), tell whether the file's extension is in the extensions list. The check should be case insensitive. The file might not have an extension.
 
=={{header|D}}==
<lang d>void main() {
import std.stdio, std.string, std.path, std.algorithm;
 
immutable exts = [".txt", ".gz", ".bat", ".c", ".c++", ".exe", ".pdf"];
 
immutable fileNames =
"text.txt
text.TXT
test.tar.gz
test/test2.exe
test\\test2.exe
test
a/b/c\\d/foo
foo.c
foo.C
foo.C++
foo.c#
foo.zkl
document.pdf";
 
foreach (fName; fileNames.split)
writeln(fName, ": ", exts.canFind(fName.extension.toLower));
}</lang>
{{out}}
<pre>text.txt: true
text.TXT: true
test.tar.gz: true
test/test2.exe: true
test\test2.exe: true
test: false
a/b/c\d/foo: false
foo.c: true
foo.C: true
foo.C++: true
foo.c#: false
foo.zkl: false
document.pdf: true</pre>
 
=={{header|Haskell}}==
Line 24 ⟶ 63:
lowerExtensions = map toLower extensions
</lang>
 
 
=={{header|J}}==