如何正确使用f#中的split方法?
代码:
let a = "abc def"
let b = a.Split [|' '|]
Console.WriteLine("{0}", b)
确实返回
"System.String[]"
我尝试了很多变种:
.Split([|' '|])
语言文档&其他问题并没有真正帮助。
我希望b成为:
["abc","def"]
感谢您的帮助。
答案 0 :(得分:5)
你的Console.WriteLine
是这里的实际问题,而不是你获得数组与列表的事实。只是该列表会覆盖ToString
,这样才能使您的代码正常工作。
您可以使用其中任何一个来获得与数组相同的效果:
Console.WriteLine(sprintf "%A" b)
printfn "%A" b
答案 1 :(得分:2)
我认为你想要一个列表作为结果,但.Split
返回一个字符串数组,而不是字符串列表。
如果您想要列表,请在致电Array.toList
后致电.Split
:
let b = a.Split [|' '|] |> Array.toList
<强>更新强>
根据您的评论,如果您对结果作为数组感到满意,那么您需要更改的就是打印方式。
一种方法是使用sprintf
漂亮打印数组,如我的评论和其他答案中所述。这是另一种方式:
open System
let a = "abc def"
let b = a.Split [|' '|]
Console.WriteLine(String.Join(";", b))