Anonymous user
Extract file extension: Difference between revisions
→{{header|Racket}}: Several Improvements
(→{{header|Racket}}: Several Improvements) |
|||
Line 240:
<lang Racket>#lang racket
;; Note that for a real implementation, Racket has a
(define (string-suffix x)▼
;; `filename-extension` in its standard library, but don't use it here
(define v (regexp-match #px"\\.[[:alnum:]]+$" x))▼
;; since it requires a proper name (fails on ""), returns a byte-string,
;; and handles path values so might run into problems with unicode
;; string inputs.
(define (string-
(
(define examples (list "picture.jpg"▼
"http://mywebsite.com/picture/image.png"▼
"myuniquefile.longextension"▼
"IAmAFileWithoutExtension"▼
"/path/to.my/file"▼
"file.odd_one"▼
""▼
;Extra, with unicode▼
"café.png"▼
"file.resumé"▼
; with unicode combining characters▼
"cafe\u0301.png"▼
(displayln "Official task") ▼
▲ "http://mywebsite.com/picture/image.png"
(for-each (lambda (x) (printf "~s ==> ~s\n" x (string-suffix x)))▼
▲ "IAmAFileWithoutExtension"
▲ ""
▲ ;; Extra, with unicode
▲ "café.png"
▲ ;; with unicode combining characters
▲ "cafe\u0301.png"
(for ([x (in-list examples)])
(for ([x (in-list examples)])
</lang>
▲(displayln "With unicode support")
▲(for-each (lambda (x) (printf "~s ==> ~s\n" x (string-suffix/unicode x)))
{{out}}
<pre>Official task:
"picture.jpg" ==> ".jpg"
"http://mywebsite.com/picture/image.png" ==> ".png"
"myuniquefile.longextension" ==> ".longextension"
"IAmAFileWithoutExtension" ==> ""
"/path/to.my/file" ==> ""
"file.odd_one" ==> ""
"" ==> ""
"café.png" ==> ".png"
"file.resumé" ==> ""
"café.png" ==> ".png"
"file.resumé" ==> ""
With unicode support:
"picture.jpg" ==> ".jpg"
"http://mywebsite.com/picture/image.png" ==> ".png"
"myuniquefile.longextension" ==> ".longextension"
"IAmAFileWithoutExtension" ==> ""
"/path/to.my/file" ==> ""
"file.odd_one" ==> ""
"" ==> ""
"café.png" ==> ".png"
"file.resumé" ==> ".resumé"
"café.png" ==> ".png"
"file.resumé" ==> ".resumé"
</pre>
=={{header|REXX}}==
|