我需要阅读文本文件,然后检查文本文件中内容的输入文本。
如果输入文本存在,则将nextline(在输入文本之后)移动到csv文件中。
示例输入: input.txt
Hi
Hello
-------------------------------------------------------------------------------
Code Name ID Customers CID Time. %
==================== ========= =========== ============ ===== =================
Harish SM 1001 Tower India 44.58
Siva DM 2310 Cata China 56.78
No Name ID Customers
==================== ========= ===========
MS Norway 1001 UNIBIC
Datas are inside the csv file.
THanks
如果我输入“代码名称”,那么CodeName后面的那两行将保存在csv文件中直到换行符。
如果输入“No Name”,则No Name之后的一行将存储在另一个csv文件中。
只需要用c#编写代码。
我对c#console应用程序有点了解
如何编写代码以执行文本文件读取和内容到csv?。
答案 0 :(得分:2)
由于输入文件的格式不是最好的设置,我们需要提前读取才能使其正常工作。以下过程应该将给定ID代码之后的行提取为字符串数组,第一个包含标识符行。
public string[] GetDataLinesFromFile(string filename, string searchString)
{
List<string> dataEntries = new List<string>();
using (System.IO.StreamReader stream = new System.IO.StreamReader(filename))
{
System.IO.TextReader tr = stream;
bool foundSearchString = false;
string lastLine = string.Empty;
string line = string.Empty;
while (!stream.EndOfStream)
{
lastLine = line;
line = tr.ReadLine();
if (lastLine.Trim().StartsWith(searchString) && line.Contains("===================="))
{
foundSearchString = true;
continue;
}
if (foundSearchString)
{
// Start after the divider line
if (lastLine.Contains("===================="))
continue;
// If the current line read is a marker line, then our last line is actually a new identifier line
if (line.Contains("===================="))
{
// Can be used to look for multiple listings with the same ID
foundSearchString = false;
continue;
// If you only want the first found ID, uncomment this and comment out above
// return dataEntries.ToArray();
}
// If our previously read line is not empty, add it to the list of strings
if (lastLine.Trim().Length != 0)
dataEntries.Add(lastLine);
}
}
}
return dataEntries.ToArray();
}
然后要使用此功能,只需调用它:
string[] entries = GetDataLinesFromFile("input.txt", "Code Name");
要将这些文件保存到.csv文件中,您只需遍历字符串数组中的每个字符串并查找选项卡标记作为分隔符,或者如果列的宽度设置为宽度,那么您将硬编码这些宽度英寸