在 F# 中,string 是一種物件,用來表示不可變的文字,也就是一連串的 Unicode 字元(字母、數字、標點符號等),定義方式如下:
let fruit = "Apple"
字串的操作方式有兩種:呼叫字串本身的方法,或是使用 String 模組的函式。字串一旦建立,它的值就永遠不會改變。任何看起來會修改字串的方法或函式,實際上都會回傳一個新的字串。
字串可以用幾種不同的方式串接或格式化。
+ 運算子來串接:let sentence = "Apple" + " is a type of fruit."
sprintf 函式來格式化文字,在格式文字中放置預留位置(%s 代表 string),並把值當作引數傳入:let sentence = sprintf "%s is a type of %s." "Apple" "fruit"
在這道練習中,你會處理日誌行。
每一行日誌都是格式如下的字串:"[<LEVEL>]: <MESSAGE>"。
日誌等級一共有三種:
INFOWARNINGERROR你有三個任務,每個任務都會拿到一行日誌,並要你對它做點處理。
實作 message 函式,回傳日誌行的訊息:
message "[ERROR]: Invalid operation"
// => "Invalid operation"
開頭或結尾的空白都應該移除:
message "[WARNING]: Disk almost full\r\n"
// => "Disk almost full"
實作 logLevel 函式,回傳日誌行的日誌等級,且應以小寫回傳:
logLevel "[ERROR]: Invalid operation"
// => "error"
實作 reformat 函式,重新格式化日誌行,把訊息放在前面,並在訊息之後的括號中加上日誌等級:
reformat "[INFO]: Operation completed"
// => "Operation completed (info)"