我有一个包含大约 8000 行的文本文件。每行必须有 90 个字符。每行包含不同的块,所以我必须为每个块使用子字符串。例如。xx-xxxxxxxxx-xx-xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
我使用 Substring(x,x) 来获取 for 循环中的每个块。
有些行没有 122 个字符,
例如。xx-xxxxxxxxx-xx-xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx-xxxxx
所以我想跳过这些行并为其他人继续。我不明白在 C# 中正确使用 String.Skip 函数。
这是我的代码。
public void getext()
{
// bool check = false;
MySqlConnectionStringBuilder con = new MySqlConnectionStringBuilder();
con.Server = "xxx";
con.UserID = "xxx";
con.Password = "xxx";
con.Database = "xxx";
MySqlConnection sqlcon = new MySqlConnection(con.ToString());
string padding = "";
try
{
sqlcon.Open();
//var watch = System.Diagnostics.Stopwatch.StartNew();
var path = "C:\\xxx\\xxx\\xxx\\1.txt";
var lines = File.ReadAllLines(path);
for (var i = 0; i < lines.Length; i += 1)
{
string str = lines[i].ToString();
string code, control1, actype, control2, filler, control3, sponsor,
control4, amtdate, control5;
code = str.Substring(0, 2);
control1 = str.Substring(2, 9);
actype = str.Substring(11, 2);
control2 = str.Substring(13, 18);
filler = str.Substring(31, 40);
control3 = str.Substring(74, 16);
sponsor = str.Substring(90, 20);
MySqlCommand cmd = new MySqlCommand("addext", sqlcon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("code", MySqlDbType.VarChar).Value = code;
cmd.Parameters.Add("control1", MySqlDbType.VarChar).Value = control1;
cmd.Parameters.Add("actype", MySqlDbType.VarChar).Value = actype;
cmd.Parameters.Add("control2", MySqlDbType.VarChar).Value = control2;
cmd.Parameters.Add("filler", MySqlDbType.VarChar).Value = filler;
cmd.Parameters.Add("control3", MySqlDbType.VarChar).Value = control3;
cmd.Parameters.Add("sponsor", MySqlDbType.VarChar).Value = sponsor;
cmd.ExecuteNonQuery();
//sqlcon.Close();
label1.Visible = true;
//sqlcon.Close();
//watch.Stop();
//var elapsedMs = watch.Elapsed.TotalMinutes;
label1.Text = "success";
// sqlcon.Close();
}
sqlcon.Close();
}
catch (Exception ex)
{
label1.Visible = true;
label1.Text = "fail" + ex.ToString();
}
}