C# 如何忽略字段并将被忽略的字段设置为函数中的全局变量?
我有这个代码来组合2个不同的csv文件C# 如何忽略字段并将被忽略的字段设置为函数中的全局变量?,c#,global-variables,field,C#,Global Variables,Field,我有这个代码来组合2个不同的csv文件 try { var jobStartLine = File.OpenText(PackAuftrag).ReadLine(); var comparisonField = jobStartLine.Split(';')[4]; foreach (var line in File.ReadAllLines(BoxData)) { var fields = line.Split(new char[] {';'}
try
{
var jobStartLine = File.OpenText(PackAuftrag).ReadLine();
var comparisonField = jobStartLine.Split(';')[4];
foreach (var line in File.ReadAllLines(BoxData))
{
var fields = line.Split(new char[] {';'}, 2);
if (comparisonField == fields[0])
{
File.WriteAllLines(JobStart,
new string[] {jobStartLine + ";" + fields[1]});
break;
}
}
}
My BoxData=data1;数据2;数据3;数据4;数据5
此时data2到data5正在JobStart文件中
数据5不应包含在JobStart文件中
我想将data5设置为全局变量
我怎么能做到这一点,我只是不明白这一点,需要帮助
这有助于理解我的问题:
这就解决了我认为是你的问题。以下是我解决问题的方法:
if (File.Exists(JobStart))
{
File.Delete(JobStart);
}
try
{
var jobStartLine = File.OpenText(PackAuftrag).ReadLine();
var comparisonField = jobStartLine.Split(';')[4];
foreach (var line in File.ReadAllLines(BoxData))
{
var fields = line.Split(new char[] { ';' }, 2);
if (comparisonField == fields[0])
{
string string2write = "";
string2write += JobName + ',';
string2write += jobStartLine.Split(';')[0] + ',';
string2write += jobStartLine.Split(';')[1] + ',';
string2write += jobStartLine.Split(';')[2] + ',';
string2write += jobStartLine.Split(';')[3] + ',';
string2write += jobStartLine.Split(';')[5] + ',';
string2write += line.Split(';')[1] + ',';
string2write += line.Split(';')[2] + ',';
string2write += line.Split(';')[3] + ',';
string2write += line.Split(';')[4] + ',';
string2write += line.Split(';')[5] + ',';
string2write += line.Split(';')[6];
PrinterSelected = line.Split(';')[7];
FileStream fst = new FileStream(JobStart, FileMode.Create, FileAccess.Write);
StreamWriter stw = new StreamWriter(fst, Encoding.Default);
stw.Write(string2write);
stw.Dispose();
stw.Close();
// File.WriteAllLines(JobStart, new string[] { jobStartLine + ";" + fields[1]});
break;
}
这不是最好的解决方案,但即使您想从一开始就宣布自己的答案是正确的,您至少应该知道应该使用StringBuilder而不是“+=”,并且使用“using”而不是忘记处理/关闭流。一切都好。@LepiPerke我没有把它标记为“最佳”答案,但更像是“我是如何做到的”,我根本不是最好的程序员。另一方面,我是C#的新程序员。。。但是谢谢你的建议
if (File.Exists(JobStart))
{
File.Delete(JobStart);
}
try
{
var jobStartLine = File.OpenText(PackAuftrag).ReadLine();
var comparisonField = jobStartLine.Split(';')[4];
foreach (var line in File.ReadAllLines(BoxData))
{
var fields = line.Split(new char[] { ';' }, 2);
if (comparisonField == fields[0])
{
string string2write = "";
string2write += JobName + ',';
string2write += jobStartLine.Split(';')[0] + ',';
string2write += jobStartLine.Split(';')[1] + ',';
string2write += jobStartLine.Split(';')[2] + ',';
string2write += jobStartLine.Split(';')[3] + ',';
string2write += jobStartLine.Split(';')[5] + ',';
string2write += line.Split(';')[1] + ',';
string2write += line.Split(';')[2] + ',';
string2write += line.Split(';')[3] + ',';
string2write += line.Split(';')[4] + ',';
string2write += line.Split(';')[5] + ',';
string2write += line.Split(';')[6];
PrinterSelected = line.Split(';')[7];
FileStream fst = new FileStream(JobStart, FileMode.Create, FileAccess.Write);
StreamWriter stw = new StreamWriter(fst, Encoding.Default);
stw.Write(string2write);
stw.Dispose();
stw.Close();
// File.WriteAllLines(JobStart, new string[] { jobStartLine + ";" + fields[1]});
break;
}