2012-03-19 62 views
3

我有一个包含以下C#阅读txt文件和数据存储在格式化阵列

Name address phone  salary 
Jack Boston 923-433-666 10000 

所有字段由空格分隔的文本文件。

我想写一个C#程序,这个程序应该读取这个文本文件,然后将其存储在格式化数组中。

我的数组如下:

address 
salary 

当过我试图在谷歌我得到的是如何阅读和写在C#中的文本文件的样子。

非常感谢您的时间。

+0

你在哪里困惑?你有什么尝试?最难的部分可能会加载文件。 – Jetti 2012-03-19 20:16:33

+4

如果你能控制它,我认为空间不会产生很好的分隔符。你可能想改变它。 – CAbbott 2012-03-19 20:16:49

+0

我能够读取文件,但不知道加载...因为加载文件我想第二(地址)和第四字段(工资)。 – 2012-03-19 20:18:51

回答

6

可以使用File.ReadAllLines方法将文件加载到数组中。然后,您可以使用for循环遍历这些行,并使用字符串类型的Split方法将每行分隔到另一个数组中,并将这些值存储在格式化数组中。

喜欢的东西:

static void Main(string[] args) 
    { 
     var lines = File.ReadAllLines("filename.txt"); 

     for (int i = 0; i < lines.Length; i++) 
     { 
      var fields = lines[i].Split(' '); 
     } 
    } 
+0

非常感谢你! – 2012-03-19 20:36:19

+0

有帮助,谢谢! – 2015-11-04 15:18:04

2

不要重新发明轮子。可以使用例如fast csv reader,您可以指定您需要的delimeter

互联网上有很多其他人都喜欢这样,只要搜索并选择一个适合您的需求。

1

这个答案假设你不知道有多少空白是在给定的线每个字符串之间。

// Method to split a line into a string array separated by whitespace 
private string[] Splitter(string input) 
{ 
    return Regex.Split(intput, @"\W+"); 
} 


// Another code snippet to read the file and break the lines into arrays 
// of strings and store the arrays in a list. 
List<String[]> arrayList = new List<String[]>(); 

using (FileStream fStream = File.OpenRead(@"C:\SomeDirectory\SomeFile.txt")) 
{ 
    using(TextReader reader = new StreamReader(fStream)) 
    { 
     string line = ""; 
     while(!String.IsNullOrEmpty(line = reader.ReadLine())) 
     { 
      arrayList.Add(Splitter(line)); 
     } 
    } 
}