如何在OCaml中获取字符串的整数部分?
我的字符串的格式是A3、A5、A38。。。我只对它的整数部分感兴趣 我想要像这样的东西:如何在OCaml中获取字符串的整数部分?,ocaml,Ocaml,我的字符串的格式是A3、A5、A38。。。我只对它的整数部分感兴趣 我想要像这样的东西: let getIntofString s = match s with "A1" -> 1 | .. 如何操作?从最初打开的模块和标准库的string模块中查看string\u of int。这应该可以让您开始了。您必须使用sub、length和字符串的int\u open String let getIntofString s = let l=length s in let si=su
let getIntofString s = match s with
"A1" -> 1
| ..
如何操作?从最初打开的模块和标准库的
string
模块中查看string\u of int
。这应该可以让您开始了。您必须使用sub、length和字符串的int\u
open String
let getIntofString s =
let l=length s in
let si=sub s 1 (l-1) in
int_of_string si
;;
试验
允许进行一些简单的模式匹配,而不需要进行复杂的解析
例如:
let identity x = x
let parseAInt s =
Scanf.sscanf s "A%u" identity
这里,Scanf.sscanf
将输入字符串作为第一个参数,将要匹配的模式作为第二个参数(%u
表示无符号整数),将解析结果转换为所需类型的函数作为第三个参数。因为在这种情况下我们不需要这样的转换,所以标识函数在这里就足够了
请注意,如果您不能保证此函数的输入与模式实际匹配,则可能必须处理异常(
Scanf.Scan\u failure
,查找模式不匹配,End\u文件
,查找字符不足,或无法将字符串转换为数字)(例如,因为它是由用户提供的)。是的,sub可能是我所需要的。我不知道字符串的长度(因为它可能有1个数字,甚至3个,比如A5和A157),但加上长度,我将把它取出来。谢谢。这是我需要的。非常感谢
let identity x = x
let parseAInt s =
Scanf.sscanf s "A%u" identity