gpt4 book ai didi

elixir - 如何在 Elixir 中按关键字拆分列表

转载 作者:行者123 更新时间:2023-12-04 05:36:51 26 4
gpt4 key购买 nike

假设我有一个单词列表,其中一个关键字(在本例中为“stop”)划分了完整的句子:

["Hello", "from", "Paris", "stop", "Weather", "is", "sunny", "stop", "Missing", "you", "stop"]

我想变成:
[["Hello", "from", "Paris"], ["Weather", "is", "sunny"], ["Missing", "you"]]

我知道我可以用 String.split 处理字符串,但理想情况下,我想学习如何使用基本函数结构来解决上述问题,例如 [head|tail] 上的递归等,但我不知道从哪里开始从如何累积中间列表开始。

最佳答案

这是一个使用模式匹配的简单尾递归实现:

defmodule Main do
def split_on(list, on) do
list
|> Enum.reverse
|> do_split_on(on, [[]])
|> Enum.reject(fn list -> list == [] end)
end

def do_split_on([], _, acc), do: acc
def do_split_on([h | t], h, acc), do: do_split_on(t, h, [[] | acc])
def do_split_on([h | t], on, [h2 | t2]), do: do_split_on(t, on, [[h | h2] | t2])

def main do
["Hello", "from", "Paris", "stop", "Weather", "is", "sunny", "stop", "Missing", "you", "stop"]
|> split_on("stop")
|> IO.inspect
end
end

Main.main

输出:
[["Hello", "from", "Paris"], ["Weather", "is", "sunny"], ["Missing", "you"]]

关于elixir - 如何在 Elixir 中按关键字拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39087950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com