C#.Net中的文本解析 [英] Text parsing in C#.Net
本文介绍了C#.Net中的文本解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨..我正在分析文本文件.我被卡在一个地方..我想知道如何解析文本文件的文本部分..我想跳过标题(项目,签证等) ..)和(No | Amt)以及表SALES(STD),SALES(ELC)等左侧的标题.我只想在数据库中插入数字值以及MerchantNo和OutletName
Hi..i am working on parsing a textfile.i am stuck at one place..i want to know how can i parse this text part of text file..i want to skip the headers(item,visa,etc..) and(No|Amt) and the headings on left side of table SALES(STD),SALES(ELC),etc.. i want to insert only the numeric values in database along with MerchantNo and OutletName
MERCHANT NO : 105838015
OutletName : Big Bazzar
ITEM VISA MASTERCARD DINERS TOTAL
------------------------------------------------------------------------------------------------------------------------------------
| NO| AMT | NO| AMT | NO| AMT | NO| AMOUNT
------------------------------------------------------------------------------------------------------------------------------------
SALES(STD) | 0| 0.00| 0| 0.00| 0| 0.00| 0| 0.00
SALES(ELC) | 10| 16466.78| 9| 16573.86| 0| 0.00| 19| 33040.64
REFUND | 1| -371.20| 0| 0.00| 0| 0.00| 1| -371.20
DISC/STD | 0| 0.00| 0| 0.00| 0| 0.00| 0| 0.00
DISC/ELC | 10| -238.77| 9| -240.34| 0| 0.00| 19| -479.11
DISC/REF | 1| 6.12| 0| 0.00| 0| 0.00| 1| 6.12
ACCRUED | 0| 0.00| 0| 0.00| 0| 0.00| 0| 0.00
这是我为文本文件编写的代码部分,用于解析文本文件中的其他数据.
This is the part of code which i have wriiten for the textfile for parsing other data in textfile..
foreach (string item in str)
{
if (item.Trim().Contains("MERCHANT NO :"))
{
string MNo1 = item.Substring(15, 23).Trim();
MNo = Convert.ToInt32(MNo1);
}
//condition for retrieving records from textfile
if (item.Contains("XXXX"))
{ //splitting each and every line to an array based on space between the data.
char[] separators = new char[] { ' ' };
string[] rec = item.Trim().Split(separators, StringSplitOptions.RemoveEmptyEntries); //44
for (int i = 0; i < rec.Length; i++)
{
if (!String.IsNullOrEmpty(rec[i]))
{
string Date = rec[0].ToString();
AuthDate = Convert.ToDateTime(Date);
BNo = rec[1].ToString();
SNo = rec[2].ToString();
CardNo = rec[3].ToString();
TranType = rec[4].ToString();
RefNumber = rec[5].ToString();
AuthCode = rec[6].ToString();
string Amount = rec[7].ToString();
TranAmount = Convert.ToDecimal(Amount);
SqlConnection con = new SqlConnection("Data Source=COMPUTER-8EB749;Initial Catalog=TRMSDB;Integrated Security=true");
con.Open();
string columnnames = "MerchantNo,AuthDate,BTNo,SeqNo,CardNo,TranType,RefNo,AuthCode,TranAmt";
string InsertQuery = String.Format("insert into TblBank ({0}) values ('{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')", columnnames, MNo, AuthDate, BNo, SNo, CardNo, TranType, RefNumber, AuthCode, TranAmount);
SqlCommand cmd = new SqlCommand(InsertQuery, con);
cmd.ExecuteNonQuery();
}
break;
}
}
//What logic can i apply here..
if(item.StartsWith)
{
char[] separators = new char[] {'|'};
string[] amount = item.Trim().Split(separators);
for (int j = 0; j < amount.Length; j++)
{
if (!String.IsNullOrEmpty(amount[j]))
{
}
}
} }
请提供帮助..
Do help..
推荐答案
string[] parts = str.Split("\r\n");
string merchantNumber = "";
string outletName = "";
int pos = -1;
foreach(string line in parts)
{
if (line.Contains("MERCHANT NO"))
{
pos = line.IndexOf(":");
if (pos >= 0)
{
merchantNumber = line.SubString(pos).Trim();
}
}
if (line.Contains("OutletName"))
{
pos = line.IndexOf(":");
if (pos >= 0)
{
outletName = line.SubString(pos).Trim();
}
}
if (!string.IsNullOrEmpty(merchantName) && !string.IsNullOrEmpty(outletname))
{
break;
}
}
for int (i = parts.Length - 1; i >= 0; i--)
{
if (!parts[i].Contains("-----")
{
HandleData(parts[i]);
}
else
{
break;
}
}
private void HandleData(string data)
{
string[] parts = data.Trim.Split("|");
for (int i=0; i<=parts.Length; i++)
{
switch (i)
{
case 0 : // name
case 1 : // NO
case 2 : // AMT
... etc...
}
}
}
这篇关于C#.Net中的文本解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文