File extension is in extensions list: Difference between revisions

Content added Content deleted
(→‎{{header|Java}}: Add simpler, less-robust version)
(+ D entry)
Line 1: 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.
{{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}}==
=={{header|Haskell}}==
Line 24: Line 63:
lowerExtensions = map toLower extensions
lowerExtensions = map toLower extensions
</lang>
</lang>



=={{header|J}}==
=={{header|J}}==