F# - string to int list返回ASCII值

时间:2014-05-12 14:58:25

标签: f#

我是F#的新手,所以请放轻松我:)

我希望将字符串转换为整数列表,但是,我编写的代码会以ASCII表示形式返回整数列表。

let input = "123456"
        |> Seq.map int
        |> Seq.map(fun(x) -> x * 2)

返回

    98 
    100 
    102 
    104 
    106 
    108

我似乎无法在F#中找到一个int.Parse替代品。任何帮助都会很棒

3 个答案:

答案 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);;