Elixir-生成用于导航(面包屑目的)的字符串列表

Elixir-生成用于导航(面包屑目的)的字符串列表,elixir,Elixir,我对长生不老药很陌生(到目前为止我很喜欢它),我一直在想如何使用一个简单的字符串,比如 "folder1/folder2/folder3/last_folder" 并将其转换为路径每个部分的导航链接列表(最后一个_文件夹除外): [”https://wherever/folder1", "https://wherever/folder2", "https://wherever/folder3“] 必须有一种非常简单的方法来实现这一点——也许是使用递归?不需要显式递归。只需按/分割路径,然后执

我对长生不老药很陌生(到目前为止我很喜欢它),我一直在想如何使用一个简单的字符串,比如

"folder1/folder2/folder3/last_folder"
并将其转换为路径每个部分的导航链接列表(最后一个_文件夹除外):

[”https://wherever/folder1", "https://wherever/folder2",  "https://wherever/folder3“]


必须有一种非常简单的方法来实现这一点——也许是使用递归?

不需要显式递归。只需按
/
分割路径,然后执行
枚举扫描/3
,将累加器和当前部分连接起来,并使用
“/”
作为分隔符:

path = "folder1/folder2/folder3/last_folder"
parts = String.split(path, "/")

Enum.scan(parts, "", fn part, acc ->
  acc <> "/" <> part
end)
|> IO.inspect
如果您不想要最后一个零件,您可以从
parts
中删除最后一个零件,方法是:

parts = String.split(path, "/") |> Enum.drop(-1)
如果修改累加器的初始值,如果需要,可以添加基本URL:

path = "folder1/folder2/folder3/last_folder"
parts = String.split(path, "/") |> Enum.drop(-1)
Enum.scan(parts, "https://wherever", fn part, acc ->
  acc <> "/" <> part
end)
|> IO.inspect

你是说
/folder1
/folder1/folder2
/folder1/folder2/folder3
?也就是说,类似面包屑的东西?是的,没错,如果文件夹名称不唯一,它会失败得很惨。对不起,我们的评论不一致,我刚刚删除了我的-谢谢你的解决方案-这是最好的。
["/folder1", "/folder1/folder2", "/folder1/folder2/folder3"]
path = "folder1/folder2/folder3/last_folder"
parts = String.split(path, "/") |> Enum.drop(-1)
Enum.scan(parts, "https://wherever", fn part, acc ->
  acc <> "/" <> part
end)
|> IO.inspect
["https://wherever/folder1", "https://wherever/folder1/folder2",
 "https://wherever/folder1/folder2/folder3"]