我正试图去掉围绕整数的括号,以便将其传递给int_of_string
例如,我想将(-1(传递给int_of_string,但我不知道如何首先去掉括号,以便返回-1。
我是OCaml的初学者,如果有任何帮助,将不胜感激
这里有一个函数,它返回最右边的'('
和最左边的')'
之间的子字符串:
let inside_parens s =
let lpar =
try String.rindex s '('
with Not_found -> -1
in
let rpar =
try String.index s ')'
with Not_found -> String.length s
in
String.sub s (lpar + 1) (rpar - lpar - 1)
它适用于您给出的示例:
# int_of_string (inside_parens "(-1)");;
- : int = -1
如果您想处理一些尚未显示的情况,则可能需要调整代码。
您可以使用Scanf.sscanf
解析字符串并提取整数分量:
(* inside_parens "(-1)" returns -1 *)
let inside_parens s = Scanf.sscanf s "(%d)" Fun.id