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

技术求助:拆分ListBox导入的文本条目并映射到User类字段

问题解决:拆分TXT文件中的名称与城市并映射到User类

错误原因分析

你的代码存在两个核心问题:

  • 直接读取listBox1.Text会获取控件的全部文本(包含换行符),无法逐行处理单个用户数据
  • Split方法的参数写法错误:'#' + "#" + "#" 逻辑冗余,且Split按字符串分隔符拆分时,需要传入字符串数组而非错误的字符+字符串组合

正确实现代码

首先确保你的User类构造函数能接收Name和City参数:

public class User
{
    public string Name { get; set; }
    public string City { get; set; }

    public User(string name, string city)
    {
        Name = name;
        City = city;
    }
}

然后修改拆分逻辑,遍历ListBox的每一项逐行处理:

List<User> userList = new List<User>();

// 遍历ListBox中的每一行数据
foreach (string item in listBox1.Items)
{
    // 按"###"拆分当前行,自动忽略空条目避免异常
    string[] parts = item.Split(new string[] { "###" }, StringSplitOptions.RemoveEmptyEntries);
    
    // 验证拆分后的格式是否正确(确保有名称和城市两个字段)
    if (parts.Length == 2)
    {
        string name = parts[0].Trim(); // 去除可能的首尾空格
        string city = parts[1].Trim();
        User user = new User(name, city);
        userList.Add(user);
    }
    else
    {
        // 可选:处理格式错误的行,比如输出日志或提示
        Console.WriteLine($"格式错误的行:{item}");
    }
}

额外优化建议

如果是直接从TXT文件读取,其实可以跳过ListBox直接处理文件,效率更高:

List<User> userList = new List<User>();
string[] lines = File.ReadAllLines("你的文件路径.txt");

foreach (string line in lines)
{
    string[] parts = line.Split(new string[] { "###" }, StringSplitOptions.RemoveEmptyEntries);
    if (parts.Length == 2)
    {
        userList.Add(new User(parts[0].Trim(), parts[1].Trim()));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:15:40