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}}== |