从字符串初始化列表?

时间:2018-11-03 17:42:21

标签: f#

我有一个字符串“ H1E1T1H1”,我想用诸如“ OP”之类的字符串替换每个“ 1”,并且我认为使用列表最容易实现,因为易于添加元素。但是,我不知道如何从字符串初始化列表? (如果使用列表实际上并没有使它容易得多,请纠正我:))

1 个答案:

答案 0 :(得分:2)

最简单的方法(在F#中是惯用的)是使用String.Replace方法,如下所示:

let str = "H1E1T1H1"
let result = str.Replace("1","OP")

但是如果您想要FP只是因为您可以...:)

"H1E1T1H1"
|> Seq.map (function | '1' -> "OP" | x -> string x)
|> String.concat ""

如果要根据字符索引用不同的字符串替换相同的字符

"H1E1T1H1"
|> Seq.mapi (fun i x ->
    match i,x with
    | (i, '1') when i < 4 || i > 6 -> "OP"
    | (_, x) -> string x)
|> String.concat ""