如何以可以转换 ["a";"b";"c";"a";"d";"e" 的方式在 F# 中使用模式匹配] 变成 ["a b c a";"d";"e"]
How to use pattern matching in F# in a way that i can convert ["a";"b";"c";"a";"d";"e"] into ["a b c a";"d";"e"]
我有一个像 ["a";"b";"c";"a","d","e"] 这样的字符串列表,我想知道如何使字符串列表像 ["a b c a";"d";"e"] y 尝试模式匹配,但我遇到了太多问题:
let rec modifyString lista =
match lista with
|[] -> []
//try to get the place where my string start
|head::tail when head = "a" ->
let tryHard = helperString tail
tryHard
// try to pass a list that is not with 'a'
|primero::segundo ->
[primero] :: modifyString segundo
// Try to get de tail list that i know is after "a"
let rec helperString lista =
match lista with
|[] -> []
|head::tail when tail.Head <> string '"' ->
let aux = head + " "
let aux2 = head :: helperString tail
aux2
现在我几乎已经解决了这个问题,现在的问题是,当给出这样的东西时 [a b c d e " e f g " h i j](认为是一个字符串列表,其中每个元素都是一个字符串)输出是 ["a" ;"b";"c";"d";"ef"; "g";""";"h";"i";"j"][] 代码是下一个:
let rec helperString lista =
match lista with
|head::tail when tail.Head = string '"' ->
head + tail.Head::tail.Tail
|head::tail when tail.Head <> string '"' ->
let aux = helperString tail
head + tail.Head :: tail.Tail
let rec modifyString listab =
match listab with
|[] -> []
|head::tail when tail.Head <> string '"' ->
head :: modifyString tail
|head::tail when tail.Head = string '"' ->
helperString tail.Tail
我终于在代码的最后一次更新中知道如何完成这个任务使用 var aux 。
let rec helperString lista =
match lista with
|head::tail when tail.Head = string '"' ->
head + tail.Head::tail.Tail
|head::tail when tail.Head <> string '"' ->
let aux = helperString tail
head + aux.Head :: aux.Tail
let rec modifyString listab =
match listab with
|[] -> []
|head::tail when tail.Head <> string '"' ->
head :: modifyString tail
|head::tail when tail.Head = string '"' ->
helperString tail.Tail
我有一个像 ["a";"b";"c";"a","d","e"] 这样的字符串列表,我想知道如何使字符串列表像 ["a b c a";"d";"e"] y 尝试模式匹配,但我遇到了太多问题:
let rec modifyString lista =
match lista with
|[] -> []
//try to get the place where my string start
|head::tail when head = "a" ->
let tryHard = helperString tail
tryHard
// try to pass a list that is not with 'a'
|primero::segundo ->
[primero] :: modifyString segundo
// Try to get de tail list that i know is after "a"
let rec helperString lista =
match lista with
|[] -> []
|head::tail when tail.Head <> string '"' ->
let aux = head + " "
let aux2 = head :: helperString tail
aux2
现在我几乎已经解决了这个问题,现在的问题是,当给出这样的东西时 [a b c d e " e f g " h i j](认为是一个字符串列表,其中每个元素都是一个字符串)输出是 ["a" ;"b";"c";"d";"ef"; "g";""";"h";"i";"j"][] 代码是下一个:
let rec helperString lista =
match lista with
|head::tail when tail.Head = string '"' ->
head + tail.Head::tail.Tail
|head::tail when tail.Head <> string '"' ->
let aux = helperString tail
head + tail.Head :: tail.Tail
let rec modifyString listab =
match listab with
|[] -> []
|head::tail when tail.Head <> string '"' ->
head :: modifyString tail
|head::tail when tail.Head = string '"' ->
helperString tail.Tail
我终于在代码的最后一次更新中知道如何完成这个任务使用 var aux 。
let rec helperString lista =
match lista with
|head::tail when tail.Head = string '"' ->
head + tail.Head::tail.Tail
|head::tail when tail.Head <> string '"' ->
let aux = helperString tail
head + aux.Head :: aux.Tail
let rec modifyString listab =
match listab with
|[] -> []
|head::tail when tail.Head <> string '"' ->
head :: modifyString tail
|head::tail when tail.Head = string '"' ->
helperString tail.Tail