| sample-scheme-function.scm - A Lisp form - A Scheme function. | Lecture 1 - slide 2 : 49 Program 1 |
(define (file-name-extension file-name)
(let ((extension-pos (find-in-string-from-end file-name #\.))
(forward-slash-pos (find-in-string-from-end file-name #\/))
(backward-slash-pos (find-in-string-from-end file-name #\\)))
(cond ((and extension-pos forward-slash-pos (> extension-pos forward-slash-pos))
(substring file-name (+ extension-pos 1) (string-length file-name)))
((and extension-pos forward-slash-pos (<= extension-pos forward-slash-pos))
"")
((and extension-pos backward-slash-pos (> extension-pos backward-slash-pos))
(substring file-name (+ extension-pos 1) (string-length file-name)))
((and extension-pos backward-slash-pos (<= extension-pos backward-slash-pos))
"")
(extension-pos (substring file-name (+ extension-pos 1) (string-length file-name)))
(else ""))))