如何将文本文件行转为列表?并实现列表内容的按行删除与搜索
C# 文本文件行处理解决方案
1. 将文本文件每一行转换为列表
在C#中可以直接用File.ReadAllLines()方法一次性读取文件所有行,返回的string[]可直接转为List<string>:
using System.IO; using System.Collections.Generic; List<string> userLines = new List<string>(File.ReadAllLines("data.txt"));
如果文件体积较大,推荐逐行读取以降低内存占用:
List<string> userLines = new List<string>(); foreach (string line in File.ReadLines("data.txt")) { userLines.Add(line); }
2. 基于列表实现搜索与按行删除
完全可以先将文件内容转为列表,再实现搜索、删除操作,最后把修改后的列表写回文件。以下是扩展你现有data类的实现:
using System.IO; using System.Collections.Generic; using System.Linq; class Data { // 原有添加数据方法 public void AddData(string user_name, string user_email, string user_gender, string user_contact) { using (StreamWriter writer = new StreamWriter("data.txt", true)) { writer.WriteLine($"{user_name} | {user_email} | {user_gender} | {user_contact}"); } } // 搜索:根据关键词匹配行内容 public List<string> SearchUser(string keyword) { List<string> userLines = new List<string>(File.ReadAllLines("data.txt")); return userLines.Where(line => line.Contains(keyword)).ToList(); } // 按整行内容删除 public void DeleteUser(string targetLine) { List<string> userLines = new List<string>(File.ReadAllLines("data.txt")); userLines.RemoveAll(line => line.Equals(targetLine)); File.WriteAllLines("data.txt", userLines); } // 按字段删除(示例:按邮箱删除) public void DeleteUserByEmail(string email) { List<string> userLines = new List<string>(File.ReadAllLines("data.txt")); userLines.RemoveAll(line => line.Split(new[] { " | " }, StringSplitOptions.None)[1].Equals(email)); File.WriteAllLines("data.txt", userLines); } }
文本文件内容示例
每行格式为用户名 | 邮箱 | 性别 | 联系方式,示例内容:
John Doe | john@example.com | Male | 1234567890
Jane Smith | jane@example.com | Female | 0987654321
Bob Wilson | bob@test.com | Male | 5555555555
内容的提问来源于stack exchange,提问作者Jay Delos Santos
相关产品推荐
相关产品推荐

