如何优化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
相关产品推荐
相关产品推荐

