You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化C#代码并实现仅接受8位不重复手机号功能?

C#控制台程序实现手机号验证与去重

完整修改代码

using System;
using System.IO;
using System.Linq;

namespace YourNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            int valg = Convert.ToInt32(Console.ReadLine());
            if (valg == 1)
            {
                Console.WriteLine(" first name: ");
                string fnavn = Console.ReadLine();
                Console.WriteLine("--------------------");
                Console.WriteLine(" last name: ");
                string enavn = Console.ReadLine();
                Console.WriteLine("--------------------");
                Console.WriteLine(" postcode");
                int postnummer = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(" 8 digit phone number: ");

                string phoneNumber = string.Empty;
                bool isValidPhone = false;
                string filePath = "phone_numbers.txt";
                string[] existingPhones = Array.Empty<string>();

                // 读取已存手机号(文件不存在则为空数组)
                if (File.Exists(filePath))
                {
                    existingPhones = File.ReadAllLines(filePath);
                }

                // 同时验证格式唯一性
                while (!isValidPhone)
                {
                    phoneNumber = Console.ReadLine().Trim();
                    bool formatValid = phoneNumber.Length == 8 && phoneNumber.All(char.IsDigit);
                    bool uniqueValid = !existingPhones.Contains(phoneNumber);

                    if (formatValid && uniqueValid)
                    {
                        isValidPhone = true;
                    }
                    else if (!formatValid)
                    {
                        Console.WriteLine("输入无效,请输入8位数字手机号:");
                    }
                    else
                    {
                        Console.WriteLine("该手机号已被使用,请输入新的8位数字手机号:");
                    }
                }

                // 写入新手机号到文件
                File.AppendAllText(filePath, phoneNumber + Environment.NewLine);
                Console.WriteLine("信息提交成功!");
            }
            Console.ReadKey();
        }
    }
}

关键实现细节

1. 8位数字手机号验证

  • 用while循环锁定输入流程,直到用户输入符合要求的内容
  • phoneNumber.Trim()去除输入前后空格,避免因误输入空格导致长度判断错误
  • phoneNumber.All(char.IsDigit)确保每一位输入都是数字,排除字母、符号等无效内容

2. 手机号去重逻辑

  • 提前读取文本文件中的已存手机号到数组,减少重复文件IO操作
  • 一次输入同时完成格式和唯一性检查,简化用户操作流程
  • File.AppendAllText()自动处理文件创建(文件不存在时会自动生成),并将新手机号追加到文件末尾

内容的提问来源于stack exchange,提问作者Likiyadiig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:30:48