Я пытаюсь свернуть массив массивов строк в одну строку, но мне не повезло. К сожалению, кажется, Array.reduce
ожидает, что моя лямбда вернет массив строк, потому что это массив массивов строк.Складывание массива массивов
Я получаю:
ошибка Строка 37: 'строка []' тип не соответствует тип 'строка'
Это виновный линия
(fold state) + (fold item)
Потому что ожидается, что лямбда вернется string[]
Вот код:
let splitStr (seperator: string[]) (str: string) = str.Split(seperator, StringSplitOptions.None)
let convertFile fileName =
let arrayToTransaction arr =
let rec foldArray index (sb: StringBuilder) (arr:string[]) =
if index > 5 then sb.ToString()
else
let text =
match index with
| 0 -> sb.Append(DateTime.Parse(arr.[1]).ToString("dd/MM/yy", CultureInfo.InvariantCulture))
| 1 -> sb.Append(arr.[0].Substring(0, arr.[0].IndexOf(',')).Trim())
| 2 -> sb.Append("Test")
| 3 -> sb.Append("Test")
| 4 -> sb.Append(Single.Parse(arr.[2].Substring(arr.[2].IndexOf('-') + 1)).ToString("F2", CultureInfo.InvariantCulture))
| _ -> sb.Append(String.Empty)
foldArray (index + 1) (text.Append(",")) arr
arr
|> Array.map (splitStr [|"\n"|])
|> Array.reduce (fun state item -> let fold x = foldArray 0 (new StringBuilder()) x
(fold state) + (fold item))
File.ReadAllText(fileName)
|> splitStr [|"\r\n\r\n"|]
|> arrayToTransaction
Я уверен, что у нас нет 37 строк. Пожалуйста, покажите, какая строка имеет ошибку. –
. Я добавил разъяснение на оскорбительной строке. –