将字符串[,]转换为字符串表示形式



假设我有这样一个二维数组:

let a = Array2D.create 2 2 "*"

将其转换为以下字符串的惯用方法是什么?

**n
**n

我的想法是,我需要遍历行,然后将string.concat映射到每行中的项上。然而,我似乎不知道如何迭代只是行。

我认为你必须手动遍历行(Array2D没有任何方便的功能),
但是您可以使用拼接语法获得一行。要获得索引row处的行,可以写入array.[row, *]:

let a = Array2D.create 3 2 "*"
[ for row in 0 .. a.GetLength(0)-1 ->
    String.concat "" a.[row,*] ]
|> String.concat "n"

这将创建一个行列表(使用第一个String.concat将每个行转换为字符串),然后使用第二个String.concat将行连接起来。

或者,您可以使用StringBuilder并包含Array2D.iteri函数:

let data' = [|[|"a"; "b"; "c"|]; [|"d"; "e"; "f"|]|]
let data = Array2D.init 2 3 (fun i j -> data'.[i].[j]) 
open System.Text
let concatenateArray2D (data:string[,]) =
    let sb = new StringBuilder()
    data
    |> Array2D.iteri (fun row col value ->
        (if col=0 && row<>0 then sb.Append "n" else sb)
            .Append value |> ignore
        )
    sb.ToString()
data |> concatenateArray2D |> printfn "%s"
这个打印

:

abc
def

相关内容

  • 没有找到相关文章