【问题标题】:C# Load items from file and split into arrayC# 从文件中加载项目并拆分为数组
【发布时间】:2011-09-16 02:12:21
【问题描述】:

大家好,我正在尝试加载我的文件“item.ids”的内容,该文件当前包含以下内容:

1:Stone
2:Grass
3:Dirt

我想读取文件的每一行并将其拆分为“:”。我正在使用以下代码:

    foreach(String line in File.ReadAllLines("item.ids")) {
        items = line.Split(':');
    }

    foreach (String part in items)
    {
        addToList(specs, part);
    }



}


public void addToArray(Array array, int index, String s)
{
    try
    {

        array.SetValue(s, index);
    }
    catch (Exception ex)
    {
        addToList(specs, ex.ToString());
    }
}

public void addToList(ListBox listbox, String s)
{
    listbox.Items.Add(s);
}

这可行,但它只执行最后一行,所以它会像这样输出它:

3
dirt

如果您能帮助我编写代码,那将非常有帮助。

【问题讨论】:

  • 你在哪里调用addtoarray?琼脂到底是你想用你的价值观吗?

标签: c# arrays split


【解决方案1】:

您需要在每次阅读后填写列表。

foreach(String line in File.ReadAllLines("item.ids")) 
{
    items = line.Split(':');

    foreach (String part in items)
    {
        addToList(specs, part);
    }
}

...否则默认情况下您只会添加最后一项。

【讨论】:

  • 哦,是的,哈哈,这就是原因。谢谢:)
【解决方案2】:

在第一个循环中,您每次迭代时都设置 item 字段,因此当您退出循环时,它将被设置为最后一个值。你可能想改成这样:

foreach(String line in File.ReadAllLines("item.ids")) 
{         
     foreach (String part in line.Split(':'))
     {         
          addToList(specs, part);     
     } 
}

【讨论】:

    【解决方案3】:

    您已提前关闭循环,因此项目将仅包含最后一次迭代

    将您的代码更改为:

        foreach(String line in File.ReadAllLines("item.ids")) 
        { 
            items = line.Split(':'); 
    
            foreach (String part in items) 
            { 
                addToList(specs, part); 
            } 
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2018-10-21
      • 2016-08-01
      相关资源
      最近更新 更多