我的字符串格式为A3,A5,A38 ......我只对它的整数部分感兴趣。
我想要类似的东西:
let getIntofString s = match s with
"A1" -> 1
| ..
我该怎么做?
答案 0 :(得分:2)
查看最初打开的模块中的string_of_int
和标准库的sub
模块中的String
。这应该让你开始。
答案 1 :(得分:1)
Scanf module允许一些简单的模式匹配,而不需要进行复杂的解析。
示例:
public partial class App: Application
{
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new LoginPage))
{
BarBackgroundColor = Color.Red,
//BarFontSize = "Large"???
};
}
}
这里, $(document).ready(function() {
$(this).keyup(function() {
var grandTotal = 0;
$("input[name='price[]']").each(function (index) {
var price = $("input[name='price[]']").eq(index).val();
var qty = $("input[name='qty[]']").eq(index).val();
if( qty == ""){
output = 0;
}
else{
var output = parseInt(price) * parseInt(qty);
}
if (!isNaN(output)) {
$("input[name='output[]']").eq(index).val(output);
}
});
});
});
将第一个参数作为输入字符串,第二个参数作为匹配模式(let identity x = x
let parseAInt s =
Scanf.sscanf s "A%u" identity
表示无符号整数),第三个参数作为转换将结果解析为所需类型。由于我们在这种情况下不需要这样的转换,因此身份函数就足够了。
请注意,您可能必须处理异常(Scanf.sscanf
表示模式不匹配,%u
表示用完要读取的字符,或Scanf.Scan_failure
表示无法将字符串转换为number)如果你不能保证这个函数的输入实际上与模式匹配(例如,因为它是由用户提供的)。
答案 2 :(得分:0)
您必须使用sub,length和 int_of_string 。
open String
let getIntofString s =
let l=length s in
let si=sub s 1 (l-1) in
int_of_string si
;;
测试
# getIntofString "A18";; - : int = 18 # getIntofString "A";; Exception: Failure "int_of_string". # getIntofString "";; Exception: Invalid_argument "String.sub / Bytes.sub".