String 为什么从字符串到int的转换会产生奇怪的值
我是F#的新手,在查找数字字符串的最后一个元素并将该元素转换为int时遇到困难。因此,如果字符串是“123”,那么我希望返回3。但是,该代码:String 为什么从字符串到int的转换会产生奇怪的值,string,f#,int,String,F#,Int,我是F#的新手,在查找数字字符串的最后一个元素并将该元素转换为int时遇到困难。因此,如果字符串是“123”,那么我希望返回3。但是,该代码: let s (a : string) = let x = a.[0] int x 当我执行s“123”时,这将返回49。我不明白为什么会这样。另外,当我输入字符串“124”时,它仍然给我49。有人能解释一下为什么会发生这种情况以及我如何解决这个问题吗?a[0]返回a的第一个字符:'1'。将字符强制转换为int将返回其值。您需
let s (a : string) =
let x = a.[0]
int x
当我执行
s“123”
时,这将返回49。我不明白为什么会这样。另外,当我输入字符串“124”时,它仍然给我49。有人能解释一下为什么会发生这种情况以及我如何解决这个问题吗?a[0]
返回a
的第一个字符:'1'
。将字符强制转换为int
将返回其值。您需要对字符串调用int
:
let x = a.Substring(a.Length - 1)
int x
(我在第一行使用了标准的.Net方法;F#标准库也有相同的功能。)正如您通过索引到字符串中所注意到的,F#将其视为字符数组。
看看: int“1”基本上是字符“1”的整数值 您可能需要
int“1”
或Int32.Parse(“1”)
或Int32.TryParse
a.[0]
是'1'
,其值为49。如果您想要整个字符串的整数表示,只需执行int a
@user123082:“是否有类似的内置方法来执行此操作?”这不正是int
运算符的含义吗?您可以将int
重命名为s
:让s x=int(x:string)
@user123082做什么的内置方式?@user123082Int32.TryParse
是做你想做的事情的最佳方式。它返回一个布尔元组(指示解析是否成功)和一个整数(如果解析成功,则保存解析后的值,否则为0)。像使用let(ok,x)=Int32.TryParse“123”
一样使用它。