轨道
/
C#
C#
/
练习
/
电话号码分析
电话号码分析

电话号码分析

学习练习

简介

元组

在 C# 中,元组是一种数据结构,用于组织数据,可容纳 2 个或更多任意类型的字段。

元组通常是通过将 2 个或更多用逗号分隔的表达式放在一对括号内来创建的。

string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);

元组可用于赋值和初始化操作,也可用作返回值或方法实参。

字段使用点语法提取。默认情况下,第一个字段是Item1,第二个是Item2,依此类推。非默认名称将在下文讨论。

// initialization
(int, int, int) vertices = (90, 45, 45);

// assignment
vertices = (60, 60, 60);

//  return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
    return (num1 == num2, num1 > num2 ? num1 : num2);
}

// method argument
int Add((int, int) operands)
{
    return operands.Item1 + operands.Item2;
}

字段名Item1等无助于写出可读的代码。下面的代码展示了为元组字段命名的 2 种方式。另请注意,在下面的代码中,var可用于元组,并且类型会被推断出来。这对于具有命名字段和未命名字段的元组同样适用。

// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;

// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;

说明

这道练习让你分析电话号码。

你需要实现 2 个功能。

传给这些例程的电话号码保证是 NNN-NNN-NNNN 的形式,例如 212-515-9876,且不为 null。

1. 分析电话号码

你的分析应当返回 3 项数据

  1. 表明该号码是否使用纽约区号,即前 3 位数字为 212
  2. 表明该号码是否为伪造号码,即第 5 位到第 7 位(从 1 开始计数)为前缀码 555
  3. 该号码的最后 4 位数字。

实现(静态)方法PhoneNumber.Analyze(),生成电话号码信息。

PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")

2. 检测电话号码是否带有伪造前缀码(555)

实现(静态)方法PhoneNumber.IsFake(),使用任务 1 中生成的电话号码信息来检测该电话号码是否为伪造号码。

PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
C# Exercism

准备好开始 电话号码分析 了吗?

注册 Exercism,借助 62 个概念178 个练习 和真人导师指导,学习并掌握 C#,全部免费。