1

私は["a"; "b"; "c"; "a"、 "d"、 "e"]のような文字列リストを持っています。 [「ABCA」、「D」、「E」] yはパターンマッチングと試みるが、私はあまりにも多くの問題を得る:問題は今ABCDE [このような何かを与えられたときということですF#でのパターンマッチングの使い方["a"; "b"; "c"; "a"; "d"; "e"]を["abca"; "d"; "e"]

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 

今、私はほとんどのソリューションを持って、これを"efg" hij](すべての要素が文字列であると考えると、出力は["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 
+0

それで処理されていません。|?[] - > [] I []は尾を渡すと一瞬で空のリストになることを前提としていたがイムだけなので、全体のリストを使用していませんリストのいくつかの要素は| [] - > []? –

+1

を使ってはいけないのですか?申し訳ありません、この1つは: 'head :: tail when tail.Head <> string '"' ' - ' tail.Head == "' –

+0

私がリジッドな方法で行くなら、私は知らない何かを改善しようとする..... –

答えて

1

私は最終的にちょうどの最後の更新でこのタスクを実行する方法を取得しますコード使用する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 
関連する問題