2012-03-09 54 views
6

我想從字符串中獲取浮點數。 我的意思是從文本文件逐行讀取並從一行中獲取浮點數。我發現如何逐行讀取,但是我無法將字符串拆分爲浮點數。 下面是一個例子輸入文件:ocaml字符串到4浮點數

10,10,18,18.1

7,3,10,14.2

3,3,5.3,5

我已經看了sscanf,但我做不到。任何想法?

回答

8

根據多年的經驗,我發現scanf不太可能完全按照您的要求進行。一個快速測試程序是可以的。

一種可能性是使用Str.split

let floats_of_string s = 
    List.map float_of_string (Str.split (Str.regexp "[, \t]+") s) 

您可能需要使正則表達式有點緊張,如果你要檢測無效的輸入。

6

請仔細閱讀本手冊以瞭解scanf格式的工作原理 - 它有一些怪癖,但背後有一個原因。

"%f , %f , %f , %f %!" 
+1

該解決方案適用於Scanf.sscanf :-) – cago 2012-03-09 11:30:42