更加"智能"地阅读文本文件

Med*_*000 4 c# arrays sorting file-io input

我有一个文本文件,其中包含按字母顺序排列的变量列表,其变量编号旁边的格式如下:

aabcdef           208
abcdefghijk       1191
bcdefga           7
cdefgab           12
defgab            100
efgabcd           999
fgabc             86
gabcdef           9
h                 11
ijk               80
...
...
Run Code Online (Sandbox Code Playgroud)

我想将每个文本作为字符串读取并保持其指定的id#,如read"aabcdef",并将其存储在208的数组中.

我遇到的两个问题是:

  1. 我从来没有在C#中读过文件,是否有一种方法可以读取,从行首开始到空格作为字符串?然后将下一个字符串作为int直到行尾?

  2. 鉴于这些文件的性质和大小,我不知道每个文件的最高ID值(并非所有数字都被使用,所以有些文件可能包含3000个数字,但实际上只列出200个变量)所以我怎样才能灵活地进行当我不知道数组/列表/堆栈/等等需要多大时,存储这些变量.

Sel*_*enç 5

基本上你需要一个Dictionary而不是一个数组或列表.您可以使用File.ReadLines方法读取所有行,然后根据空格和\ t(制表符)拆分它们,如下所示:

var values = File.ReadLines("path")
    .Select(line => line.Split(new [] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries))
    .ToDictionary(parts => int.Parse(parts[1]), parts => parts[0]);
Run Code Online (Sandbox Code Playgroud)

然后values[208]会给你aabcdef.它看起来像一个数组不是:)

还要确保没有重复的数字,因为Dictionary键应该是唯一的,否则您将获得异常.