Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OCaml中获取字符串的整数部分?_Ocaml - Fatal编程技术网

如何在OCaml中获取字符串的整数部分?

如何在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

我的字符串的格式是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=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