c# - 在文本文件中读取更多 'intelligently'

标签 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
...
...

我想将每个文本作为一个字符串读取并保留它的指定 id# 类似于读取“aabcdef”并将其存储到一个数组中的 208 点。

我遇到的两个问题是:

  1. 我从来没有在 C# 中读取过文件,有没有办法读取,比如从 行首到空格作为字符串?然后下一个字符串为 一个 int 直到行尾?

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

最佳答案

基本上您需要一个 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]);

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

还要确保没有重复的数字,因为 Dictionary 键应该是唯一的,否则会出现异常。

关于c# - 在文本文件中读取更多 'intelligently',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23899358/

相关文章:

c# - c#有多快?

c++ - 当从函数传递时如何在 gdb 中查看数组内容

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

c# - 内存映射文件 : How much memory can be allocated for files

c# - 从数组 C# 中删除字符串

ruby - 在 ruby​​ 中对哈希数组进行排序

Python:如何使用不区分大小写的 attrgetter 对对象列表进行排序

php - 如何使用 php 按任意字段对 mysql 表的内容进行排序?

c# - 如何在我的应用程序(网络或控制台)中引入类似 google 的爬行

c - 将结构数组传递给函数?