我對F#相當陌生,但是在過去的幾個星期裏閱讀了參考資料。我希望處理用戶提供的輸入字符串,識別和分離組成元素。例如,對於此輸入:F#如何標記用戶輸入:分隔數字,單位,單詞?
XYZ酒店:6晚住宿220EUR /夜 加上17.5%的稅
輸出應該類似於像元組的列表:
[(「XYZ」,單詞); (「酒店:」,Word);
(「6」,Number); (「晚上」,單詞);
(「at」,Operator); (「220」,Number);
(「EUR」,CurrencyCode); (「/」, 運營商); (「夜」,Word);
(「plus」,Operator); (「17.5」, 編號); (「%「, 百分); (「稅」, Word)]
由於我正在處理用戶輸入,它可能是任何東西。因此,期望用戶遵守語法是不可能的。我想識別這些數字(可以是整數,浮點數,負數......),度量單位(可選,但可以包括SI或帝國物理單位,貨幣代碼,例如我的示例中的「night/s」), ,數學運算符(如數學符號或包含「at」,「per」,「of」,「discount」等的單詞)等所有單詞。
我的印象是我應該使用主動模式匹配 - 是對的嗎? - 但我不確定如何開始。任何指向適當參考資料或類似例子的指針都會很棒。
這是一個全面的響應。你是說FParsec是一個很好的解決方案,即使我正在處理自由格式的文本 - 不是嚴格的語法? – 2011-01-11 05:27:20