【发布时间】:2016-03-04 19:42:49
【问题描述】:
我对 C# 比较陌生,并且花了很多时间试图自己解决这个问题,但没有运气。希望大家帮忙。
我有 2 个窗体。在第一种形式中,用户输入引文编号。我想获取该引用编号,在外部文本文件中搜索它,然后将该引用的行中的所有数据返回到单独的文本框中。
文本文件如下所示:
S8729936 , 6JXV123 , 10/1/2015 , 10/31/2015 , PAID , 49.5
A7472601 , 2NXP234 , 10/12/2015 , 11/11/2015 , UNPAID , 99
W2041810 , 5JPB345 , 10/19/2015 , 11/18/2015 , UNPAID , 99
第二种形式有6个文本框。我有它,所以引用号,假设 S8729936 被传递到第一个文本框,但我似乎无法弄清楚如何在文本文件中搜索 S8729936 并给我文本框内行中的其余数据。
以下是我尝试过的一些示例。我整天都在复制和粘贴,然后弄乱代码,所以如果细节似乎不匹配,那可能就是原因。
public Form2(string citation)
{
InitializeComponent();
txtCitation2.Text = citation;
const string FILENAME = @"\Path\ProjectData.txt";
FileStream fsInFile = new FileStream(FILENAME, FileMode.Open, FileAccess.Read);
StreamReader srReader = new StreamReader(fsInFile);
const char CH_DELIM = ',';
string strRecordIn;
string[] strFields;
if (strFields != null)
{
strRecordIn = srReader.ReadLine();
strFields = strRecordIn.Split(CH_DELIM);
txtLicense2.Text = strFields[1];
}
strRecordIn = srReader.ReadLine();
srReader.Close();
fsInFile.Close();
}
没有运气,像这样的事情怎么样:
string whole_file = File.ReadAllText(@"Path\ProjectData.txt");
whole_file = whole_file.Replace('\n', '\r');
string[] lines = whole_file.Split(new char[] { '\r' });
int num_rows = lines.Length;
int num_cols = lines[0].Split(',').Length;
string[,] values = new string[num_rows, num_cols];
for (int r = 0; r < num_rows; r++)
{
string[] line_r = lines[r].Split(',');
for (int c = 0; c < num_cols; c++)
{
values[r, c] = line_r[c];
}
}
txtLicense2.Text = lines[1];
不。也许是这样的:
const string FILENAME = @"C:\Users\rfranklin\Documents\ProjectData.txt";
FileStream fsinfile = new FileStream(FILENAME, FileMode.Open, FileAccess.Read);
StreamReader srReader = new StreamReader(fsinfile);
const string CH_DELIM = " ,";
string strRecordIn;
string[] strFields = new string[10];
string citnum = citation;
bool found = false;
strRecordIn = srReader.ReadLine();
foreach(string x in strFields)
{
if (x == citation)
{
found = true;
break;
}
}
if (found)
{
txtLicense2.Text = strFields[1];
}
仍然没有运气。不断地。似乎我主要是想念如何告诉程序要搜索什么,我不知道还能做什么。就像我说的那样,我整天都在谷歌上搜索各种方法来做这件事,但我似乎无法让任何事情正常工作。
如果有帮助,我正在 Visual Studio 2013 中执行此操作。
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
你需要循环文件内容。您只是在阅读第一行并对其进行处理。您需要将 ReadLine() 放入循环中。
-
你的文件有多少行?您是否可以控制此文件的格式,还是以 CSV 格式提供给您?是否有可能将其转换为数据库表(Access、MS SQL 等)?
标签: c# arrays winforms multidimensional-array