如何在Erlang中从文件名字符串中获取文件扩展名,即使文件名本身可能有一个点,例如:Filename This.Great.Image.jpg?
干杯
答案 0 :(得分:5)
stdlib中的filename
模块具有extension/1
功能,可以按您的方式工作。见http://erlang.org/doc/man/filename.html#extension-1
答案 1 :(得分:4)
另一种解决方案(这也是一项很好的心理练习)是根据Erlang strings are just lists of codepoints的事实使用递归和模式匹配。
-module(fileutils).
-export([ext/1]).
ext(Filename) -> ext(Filename, "").
ext([46 | Rest], _) -> ext(Rest, Rest); % "." == 46
ext([_ | Rest], Acc) -> ext(Rest, Acc);
ext(_, Acc) -> Acc.
然后fileutils:ext("my.coolest.file.jpg")
会让你“jpg”。
编辑:正如Dogbert在评论中建议的那样,您可以使用$.
获取.
的代码点,而不是硬编码46
。