F#-string to int list返回ASCII值
我是F#的新手,所以请对我放轻松:) 我希望将一个字符串转换为整数列表,但是,我编写的代码返回一个ASCII表示的整数列表F#-string to int list返回ASCII值,f#,F#,我是F#的新手,所以请对我放轻松:) 我希望将一个字符串转换为整数列表,但是,我编写的代码返回一个ASCII表示的整数列表 let input = "123456" |> Seq.map int |> Seq.map(fun(x) -> x * 2) 返回 98 100 102 104 106 108 我似乎在F#中找不到int.Parse选项。任何帮助都会很好作为一种.NET语言,您
let input = "123456"
|> Seq.map int
|> Seq.map(fun(x) -> x * 2)
返回
98
100
102
104
106
108
我似乎在F#中找不到int.Parse选项。任何帮助都会很好作为一种.NET语言,您可以直接使用该方法
open System
let input = "123456"
|> Seq.map Char.GetNumericValue
|> Seq.map(fun(x) -> x * 2)
编辑:
显然,Int32.Parse不接受单个字符。相应地更新了我的答案。每当您需要将一组字符映射到有序集中的整数索引时,只需减去集合中第一个值的索引(在本例中为“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 (string >> int)
|> Seq.map ((*) 2)
Char.GetNumericValue返回一个双精度值,所以我添加了“|>Seq.map int”,它就工作了。谢谢…如果你想说得含糊不清的话:
“123456”|>Seq.map(int>>(((int'1')>>(*)-2)代码>呵呵,这就是为什么我喜欢复合运算符。他们很容易让人迷惑…:为什么不使用int.Parse呢?
"123456"
|> Seq.map (string >> int)
|> Seq.map ((*) 2)