c#从TXT文件加载数据到组合框并获得第二个值

本文关键字:第二个 组合 TXT 文件 加载 数据 | 更新日期: 2023-09-27 18:02:35

我想要每一行的第二个值。例子:

Joshua,Kind,12
John,Amazing,85
Farrah,Smart,81

将显示组合框

 - Kind
 - Amazing
 - Smart
我代码:

    string[] lineOfContents = File.ReadAllLines(@"C:'Users'1'Desktop'2.txt");
    foreach (var line in lineOfContents)
    {
        string[] tokens = line.Split(',');
        comboBox1.Items.Add(tokens[0]);
    }

得到的是第一个值。所以我试试这个:

    string[] tokens = line.Split(',')[1];

但是我得到一个错误。如何在组合框中显示每一行的第二个值?谢谢!

c#从TXT文件加载数据到组合框并获得第二个值

对Split的返回值直接使用索引器意味着结果不再是数组,而是直接是字符串

你可以写

string token = line.Split(',')[1];

comboBox1.Items.Add(line.Split(',')[1]);

然而这个代码是非常危险的。如果由于某种原因,文本文件中的一行不能正确地分成3部分,会发生什么?我更愿意使用this

来安全并保护循环免受不必要的超出范围异常的影响。
string[] lineOfContents = File.ReadAllLines(@"C:'Users'1'Desktop'2.txt");
foreach (var line in lineOfContents)
{
    string[] tokens = line.Split(',');
    if(tokens.Length >= 2)
       comboBox1.Items.Add(tokens[1]);
}

不要改变(它是正确的):

string[] tokens = line.Split(',');

只是改变:

comboBox1.Items.Add(tokens[0]);

to(将0改为1,这样得到的是第二个元素而不是第一个元素):

comboBox1.Items.Add(tokens[1]);

完整代码:

string[] lineOfContents = File.ReadAllLines(@"C:'Users'1'Desktop'2.txt");
foreach (var line in lineOfContents)
{
    string[] tokens = line.Split(',');
    // get the 2nd element (the 1st item is always item 0)
    comboBox1.Items.Add(tokens[1]);
}

修改这一行:

comboBox1.Items.Add(tokens[0]);

:

comboBox1.Items.Add(tokens[1]);

,因为你的标记数组在分割后包含三个元素(在索引0,1,2处);

如果你想使用第二种方法:

string[] tokens = line.Split(',')[1];改为string tokens = line.Split(',')[1];

当直接使用索引器时,只返回值而不是数组。

问题是你必须改变

string[] tokens = line.Split(',')[1];

string tokens = line.Split(',')[1];

当你只读取一个元素(第二个元素)

欢呼。

相关文章: