1

[ "a"; "b"; "c"; "a", "d", "e"]와 같은 문자열 목록이 있는데 어떻게 그 문자열 목록을 만들 수 있는지 알고 싶습니다. [ "ABCA", "D", "E"] y는 패턴이 일치하는 시도하지만 난 너무 많은 문제 수 :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 

는 지금은 거의 솔루션이 문제 지금이 그 ABCDE 같은 것을 [주어 졌을 때 "efg"hij] (모든 요소가 문자열 인 문자열 목록이라고 생각합니다) 출력은 [ "a"; "b"; "c"; "d"; "ef"; 나는 마침내 단지의 마지막 업데이트에서이 작업을 수행하는 방법을 얻을

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

| [] -> [] 나는 꼬리를 통과하는 순간에 빈 목록이 []하지만 메신저 이후 전체 목록 만 사용하지 않을 것이라고 가정한다.? 목록의 일부 요소는 [[] -> [] 사용하지 않아야합니다. –

+1

미안하지만,이 중 하나는 다음과 같습니다 :'head :: tail when tail.Head <> string ' "''-'tail.Head == " –

+0

내가 위력적인 방식으로가는 경우에 나는 잘 모르는 것을 향상 시키려고 노력한다 ..... –

답변

1

: "g", "" ";"시간은 ";"i "가"j는 '] [] 코드는 다음입니다 코드를 사용 var에의 보조

그것은으로 처리되지
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 
관련 문제