如何在Erlang中从字符串文件名获取扩展名

时间:2018-04-06 08:04:22

标签: erlang

如何在Erlang中从文件名字符串中获取文件扩展名,即使文件名本身可能有一个点,例如:Filename This.Great.Image.jpg?

干杯

2 个答案:

答案 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