C#从文本文件中读取并存储在变量中

时间:2013-06-10 18:14:28

标签: c#

我有一个文本文件,内容为

 1 "601 Cross Street College Station TX 71234"
 2 "(another address)"
 3 ...
 .
 .

我想知道如何使用C#将此文本文件解析为整数和字符串。整数将保留S.No,字符串不包含引号。

我需要这样做,因为稍后我有一个函数,它将文本文件中的这两个值作为输入并吐出一些数据。必须在文本文件中的每个条目上执行此函数。

如果i是整数且add是字符串,则输出应为

a=1; add=601 Cross Street College Station TX 71234  //for the first line and so on

可以观察到地址需要是一个字符串。

这不是一个家庭作业问题。到目前为止我能够完成的是使用

读出所有行
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\KS\Documents\input.txt");

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

我需要查看更多输入数据,以确定最可靠的方法。

但是一种方法是将每个地址分成单词。然后,您可以遍历单词并查找仅包含数字的每个单词。这将是您的街道号码。你可以照看街道号码并寻找S,So或South,但正如你的例子所示,可能没有这样的指标。

此外,如果找到多个号码,您还没有提供您想要发生的事情。

至于删除引号,只需删除第一个和最后一个字符即可。我建议在删除之前检查它们是否为实际引号。

答案 1 :(得分:0)

根据您的描述,每个条目都有以下格式:

[space][number][space][quote][address][quote]

以下是一些快速而脏的代码,它将此格式解析为int / string元组:

using namespace System;
using namespace System.Linq;

static Tuple<int, string> ParseLine(string line)
{
    var tokens = line.Split(); // Split by spaces
    var number = int.Parse(tokens[1]); // The number is the 2nd token
    var address = string.Join(" ", tokens.Skip(2)); // The address is every subsequent token
    address = address.Substring(1, address.Length - 2); // ... minus the first and last characters
    return Tuple.Create(number, address);
}