我有一个文本文件,内容为
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");
感谢任何帮助。
答案 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);
}