ClojureにおけるstringはJavaの文字列です。Javaの文字列は、Unicode文字(英字、数字、句読点など)の並びとして不変のテキストを表すオブジェクトで、次のように定義します。
(def fruit "Apple")
clojure.stringライブラリには、文字列を操作・処理するための標準的な関数が数多く用意されています。さらに、文字列を扱うJavaの通常のメソッドも、相互運用を通じてすべて利用できます。
この演習では、ログ行を処理します。
各ログ行は、"[<LEVEL>]: <MESSAGE>"という形式の文字列です。
ログレベルは次の3つです:
INFOWARNINGERRORタスクは3つあり、それぞれがログ行を受け取って、それを使って何かをするように求めています。
message関数を実装して、ログ行のメッセージを返すようにしましょう:
(message "[ERROR]: Invalid operation")
;;=> "Invalid operation"
先頭や末尾にある空白は取り除きます:
(message "[WARNING]: Disk almost full\r\n")
;;=> "Disk almost full"
log-level関数を実装して、ログ行のログレベルを返すようにしましょう。ログレベルは小文字にして返します:
(log-level "[ERROR]: Invalid operation")
;;=> "error"
reformat関数を実装して、ログ行を整形し直しましょう。メッセージを先にして、そのあとにログレベルを括弧(())で囲んで置きます:
(reformat "[INFO]: Operation completed")
;;=> "Operation completed (info)"