我是F#的新手,所以请放轻松我:)
我希望将字符串转换为整数列表,但是,我编写的代码会以ASCII表示形式返回整数列表。
let input = "123456"
|> Seq.map int
|> Seq.map(fun(x) -> x * 2)
返回
98
100
102
104
106
108
我似乎无法在F#中找到一个int.Parse替代品。任何帮助都会很棒
答案 0 :(得分:5)
作为.NET语言,您可以直接使用Char.GetNumericValue方法
open System
let input = "123456"
|> Seq.map Char.GetNumericValue
|> Seq.map(fun(x) -> x * 2)
编辑: 显然Int32.Parse不接受单个Char。相应地更新了我的答案。
答案 1 :(得分:3)
另一种方式:
"123456"
|> Seq.map (string >> int)
|> Seq.map ((*) 2)
答案 2 :(得分:2)
每当您需要将一组字符映射到有序集中的整数索引时,您只需减去集合中第一个值的索引(在本例中为“1”),从而避免使用任何库函数:
"123456"
|> Seq.map (fun c -> int c - int '1')
|> Seq.map (fun(x) -> x * 2);;
val it : seq<int> = seq [0; 2; 4; 6; ...]
第二个映射函数也可以无点地进行:
"123456"
|> Seq.map (fun c -> int c - int '1')
|> Seq.map ((*) 2);;