트랙
/
C#
C#
/
연습 문제
/
로그 분석
로그 분석

로그 분석

학습 연습 문제

소개

확장 메서드

확장 메서드는 새로운 파생 타입을 만들거나 다시 컴파일하거나 원래 타입을 수정하지 않고도 기존 타입에 메서드를 추가할 수 있게 해줘요. 확장 메서드는 static 메서드로 정의되지만 인스턴스 메서드 구문을 사용해 호출해요. 첫 번째 매개변수 앞에는 this 한정자가 붙고, 메서드가 어떤 타입에서 작동하는지 지정하며, 네임스페이스 수준에서 스코프에 포함돼요.

public static int WordCount(this string str)
{
    return str.Split().Length;
}

"Hello World".WordCount();
// => 2

지침

이 연습 문제에서는 로그 줄을 처리해요.

각 로그 줄은 다음과 같은 형식의 문자열이에요: "[<LEVEL>]: <MESSAGE>".

로그 레벨은 세 가지가 있어요:

  • INFO
  • WARNING
  • ERROR

여기에는 여러 개의 과제가 있어요. 각 과제는 로그 줄 하나를 받아서 그 줄로 무언가를 하도록 해요.

1. 특정 부분 문자열 뒤의 문자열을 가져오기

지난달의 로그를 살펴보면, 테스트 메시지는 항상 특정 부분 문자열 뒤에 있다는 걸 알 수 있어요. 조만간 테스트 메시지를 추출해야 할 것 같아서, 그걸 도와줄 도우미 메서드를 만들기로 해요.

(정적) LogAnalysis.SubstringAfter() 확장 메서드를 구현해요. 이 메서드는 문자열 구분자를 하나 받아서 그 구분자 뒤의 부분 문자열을 반환해요.

var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."

2. 두 부분 문자열 사이의 문자열을 가져오기

자세히 살펴보니, 로그 레벨은 항상 대괄호([와 ]) 사이에 있네요. 마찬가지로 조만간 로그 레벨을 추출해야 할 것 같아서, 그걸 도와줄 도우미 메서드를 하나 더 만들기로 해요.

(정적) LogAnalysis.SubstringBetween() 확장 메서드를 구현해요. 이 메서드는 문자열 구분자 두 개를 받아서, 두 구분자 사이에 있는 부분 문자열을 반환해요.

var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"

3. 로그에서 메시지 파싱하기

(정적) LogAnalysis.Message() 확장 메서드를 구현해서 로그에 담긴 메시지를 반환해요.

var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."

4. 로그에서 로그 레벨 파싱하기

(정적) LogAnalysis.LogLevel() 확장 메서드를 구현해서 로그의 로그 레벨을 반환해요.

var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C# Exercism

로그 분석 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 C# 트랙을 개념 62개연습 문제 178개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.