F#에서 string은 유니코드 문자(글자, 숫자, 문장 부호 등)의 시퀀스로 이루어진, 변경할 수 없는 텍스트를 나타내는 객체예요. 다음과 같이 정의해요:
let fruit = "Apple"
문자열은 문자열의 메서드를 호출하거나 String 모듈의 함수를 사용해서 다뤄요. 문자열을 한 번 만들면 그 값은 절대 바뀌지 않아요. 문자열을 수정하는 것처럼 보이는 메서드나 함수도 사실은 새로운 문자열을 반환해요.
문자열은 몇 가지 방법으로 이어 붙이거나 서식을 지정할 수 있어요.
+ 연산자로 문자열을 이어 붙일 수 있어요:let sentence = "Apple" + " is a type of fruit."
sprintf 함수를 사용할 수 있어요. 서식 텍스트에 자리 표시자를 넣고(string에는 %s), 값은 인자로 넘겨줘요: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)"
Exercism에 가입하고 F# 트랙을 개념 18개연습 문제 148개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.