File extension is in extensions list: Difference between revisions

Undo revision 324498 by Drkameleon (talk) AWK solution taken out by mistake when editing Arturo solution.
No edit summary
(Undo revision 324498 by Drkameleon (talk) AWK solution taken out by mistake when editing Arturo solution.)
Line 186:
 
=={{header|Arturo}}==
<lang rebol>fileExtensions: map ["zip" "rar" "7z" "gz" "archive" "A##"] => ["." ++ lower]
hasExtension?: function [file][
in? extract.extension lower file
fileExtensions
]
files: ["MyData.a##" "MyData.tar.Gz" "MyData.gzip" "MyData.7z.backup" "MyData..." "MyData"]
 
<lang rebolarturo>fileExtensions: map [#("zip" "rar" "7z" "gz" "archive" "A##"] => ["." ++ lower])
loop files 'file ->
 
print [file "=> hasExtension?:" hasExtension? file]</lang>
hasExtension?: function [@(file][){
lowercased: map fileExtensions => lowercase
contains lowercased [lowercase|replace [pathExtension file] "." ""]
}
 
files: [#("MyData.a##" "MyData.tar.Gz" "MyData.gzip" "MyData.7z.backup" "MyData..." "MyData"])
 
loop files 'file ->{
print & + " print [file "=> hasExtension?: " + [hasExtension? file&]</lang>
}</lang>
 
{{out}}
 
<pre>MyData.a## => hasExtension?: true
MyData.tar.Gz => hasExtension?: true
MyData.gzip => hasExtension?: false
MyData.7z.backup => hasExtension?: false
MyData... => hasExtension?: false
MyData => hasExtension?: false </pre>
 
=={{header|AWK}}==
 
This solution meets the extended criteria stated in the problem.
 
<lang AWK>
# syntax: GAWK -f FILE_EXTENSION_IS_IN_EXTENSIONS_LIST.AWK
BEGIN {
n = split("zip,rar,7z,gz,archive,A##,tar.bz2", arr, ",")
for (i=1; i<=n; i++) {
ext_arr[tolower(arr[i])] = ""
}
filenames = "MyData.a##,MyData.tar.Gz,MyData.gzip,MyData.7z.backup,MyData...,MyData,MyData_v1.0.tar.bz2,MyData_v1.0.bz2"
n = split(filenames, fn_arr, ",")
for (i=1; i<=n; i++) {
ext_found = ""
for (ext in ext_arr) {
if (tolower(fn_arr[i]) ~ (".*\\." ext "$")) {
ext_found = ext
break
}
}
ans = (ext_found == "") ? "is not in list" : ("is in list: " ext_found)
printf("%s extension %s\n", fn_arr[i], ans)
}
exit(0)
}</lang>
{{out}}
<pre>
MyData.a## extension is in list: a##
MyData.tar.Gz extension is in list: gz
MyData.gzip extension is not in list
MyData.7z.backup extension is not in list
MyData... extension is not in list
MyData extension is not in list
MyData_v1.0.tar.bz2 extension is in list: tar.bz2
MyData_v1.0.bz2 extension is not in list
</pre>
 
=={{header|Batch File}}==
9,476

edits