gpt4 book ai didi

c# - 将文本文件中的数据加载到字典中

转载 作者:行者123 更新时间:2023-11-30 14:26:39 26 4
gpt4 key购买 nike

我有一个包含文本列表的文件,如下所示:

ABC Abbey something
ABD Aasdasd

This is the text file

第一个字符串的长度始终为 3。所以我想遍历文件内容,将前 3 个字母存储为键,其余为值。我正在删除它们之间的空白和 Substringing 如下存储。 key 运行良好,但我存储值的行返回以下错误。 ArgumentOutOfRangeException

这是导致问题的确切代码。

line.Substring(4, line.Length)

如果我在 0 和 line.length 之间调用 subString,它工作正常。只要我在 1 和向上 - line.length 之间调用它,我就会收到错误消息。老实说,不明白它已经花了几个小时。请提供一些帮助。

class Program {

static string line;
static Dictionary<string, string> stations = new Dictionary<string, string>();

static void Main(string[] args) {
var lines = File.ReadLines("C:\\Users\\username\\Desktop\\a.txt");
foreach (var l in lines) {
line = l.Replace("\t", "");
stations.Add(line.Substring(0, 3), line.Substring(4, line.Length));//error caused by this line
}

foreach(KeyValuePair<string, string> item in stations) {
//Console.WriteLine(item.Key);
Console.WriteLine(item.Value);
}

Console.ReadLine();
}
}

最佳答案

这是因为文档指定它将抛出 ArgumentOutOfRangeException如果:

startIndex plus length indicates a position not within this instance.

带有签名:

public string Substring(int startIndex, int length)

由于您使用了 line.Length,您知道 startIndex 加上 length 将是 4+line.Length 这绝对不是这个实例的位置。

我建议使用 one parameter version :

public string Substring(int startIndex)

因此 line.Substring(3) (感谢@adv12 的 spotting that )。从这里开始,您只需提供 startIndex。当然,您可以使用 line.SubString(3,line.Length-3),但一如既往,最好使用库,因为库是用来使程序万无一失的(这并不是冒犯性的) ,只需确保减少此任务的脑循环量即可)。但是请注意,如果出现以下情况,它仍然会引发错误:

startIndex is less than zero or greater than the length of this instance.

因此,最好检查 3 是否小于或等于 line.length...

其他建议

也许您应该看一下正则表达式捕获。现在文件中的每个键都包含三个字符。但是在(不久的)将来可能会出现四个字符。使用正则表达式捕获,您可以指定一种模式,以便在解析过程中不太可能发生错误。

关于c# - 将文本文件中的数据加载到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com