-4

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

 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");

任何帮助表示赞赏。

4

2 回答 2

3

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

但一种方法是将每个地址拆分为单词。然后,您可以遍历单词并找到每个仅包含数字的单词。这将是您的门牌号。您可以查看街道编号并查找 S、So 或 South,但如您的示例所示,可能没有这样的指示符。

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

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

于 2013-06-10T18:18:02.833 回答
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);
}
于 2013-06-10T18:32:42.890 回答