轨道
/
C#
C#
/
练习
/
日志分析
日志分析

日志分析

学习练习

简介

扩展方法

扩展方法让你能向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。它们定义为静态方法,但使用实例方法语法调用。它们的第一个形参前面带有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,借助 62 个概念178 个练习 和真人导师指导,学习并掌握 C#,全部免费。