Extract file extension: Difference between revisions

Added Kotlin
(Added Kotlin)
Line 783:
/path/to.my/file has extension: ""
file.odd_one has extension: ""</lang>
 
=={{header|Kotlin}}==
<lang scala>// version 1.0.6
 
val r = Regex("[^a-zA-Z0-9]") // matches any non-alphanumeric character
 
fun extractFileExtension(path: String): String {
if (path.isEmpty()) return ""
var fileName = path.substringAfterLast('/')
if (path == fileName) fileName = path.substringAfterLast('\\')
val splits = fileName.split('.')
if (splits.size == 1) return ""
val ext = splits.last()
return if (r.containsMatchIn(ext)) "" else "." + ext
}
 
fun main(args: Array<String>) {
val paths = arrayOf(
"http://example.com/download.tar.gz",
"CharacterModel.3DS",
".desktop",
"document",
"document.txt_backup",
"/etc/pam.d/login",
"c:\\programs\\myprogs\\myprog.exe", // using back-slash as delimiter
"c:\\programs\\myprogs\\myprog.exe_backup" // ditto
)
for (path in paths) {
val ext = extractFileExtension(path)
println("${path.padEnd(37)} -> ${if (ext.isEmpty()) "(empty string)" else ext}")
}
}</lang>
 
{{out}}
<pre>
http://example.com/download.tar.gz -> .gz
CharacterModel.3DS -> .3DS
.desktop -> .desktop
document -> (empty string)
document.txt_backup -> (empty string)
/etc/pam.d/login -> (empty string)
c:\programs\myprogs\myprog.exe -> .exe
c:\programs\myprogs\myprog.exe_backup -> (empty string)
</pre>
 
=={{header|Lua}}==
9,490

edits