【问题标题】:How to extract the filename from a URL in Elixir?如何从 Elixir 中的 URL 中提取文件名?
【发布时间】:2023-03-18 06:11:01
【问题描述】:

这是我的问题,我想从 URL ex 中获取文件名。 https://randomWebsite.com/folder/filename.jpeg我使用这个string.substring(string.lastIndexOf('/')+1)在javascript上得到了预期的结果。在 Elixir 中,我使用此函数 String.slice(string, <first_value_from_binary.match>..String.length(string) ... :binary.match() 仅获取与给定字母匹配的第一个字符的第一个索引...或者是否有任何其他解决方案从 URL 获取文件名而不是这个?

【问题讨论】:

  • elixir没有数组,我们有列表,因此没有索引。 "https://randomWebsite.com/folder/filename.jpeg" |> String.split("/") |> List.last()

标签: elixir url-parsing


【解决方案1】:

您可以使用URI.parse/1将字符串解析为URI,获取其:path,然后调用Path.basename/1获取路径最后一段的名称:

iex(1)> "https://randomWebsite.com/folder/filename.jpeg" |> URI.parse() |> Map.fetch!(:path) |> Path.basename()
"filename.jpeg"

【讨论】:

  • 很酷,谢谢。我有一个问题,如果我只做"https://randomWebsite.com/folder/filename.jpeg" |> Path.basename() 它输出相同的值有什么区别
  • 查看函数的源代码,我认为Path.basename/1 适合您的用例。
【解决方案2】:

我觉得只需要Path.basename/1:

"https://randomWebsite.com/folder/filename.jpeg"
|> Path.basename()

【讨论】:

  • 有趣的是Path 说它用于“文件系统路径”,但它在内部使用Erlang's filename 模块,其范围更广:“使用文件名意味着所有可以使用的字符串来表示一个文件。”
  • 酷,谢谢!
猜你喜欢
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 2016-01-26
相关资源
最近更新 更多