如何在c#中使用.IndexOf和.Substring从文本中获取值?

时间:2015-01-27 13:43:44

标签: c# .net string indexing

我需要对字符串变量

中的几个值求和

这是我的变量:

string strBillHeader =  "Invoice Details
INVOICE_DATE,INVOICE_DESCRIPTION,VALUE,FROM_DATE,TO_DATE
01/11/2014,New Corpbundle 7,7,01/11/2014,30/11/2014
01/11/2014,New Corpbundle 7,-7,01/11/2014,30/11/2014
01/11/2014,New Corpbundle 7,7,01/11/2014,30/11/2014
01/11/2014,Missed Call ALERT with Offer,2,01/11/2014,30/11/2014"

在这种情况下,我需要输出值为(7,-7,7,2)的值?结果得到9分。

我试着这样做:

             for (int x = 4; x <= countCommas - 3; x += 4)
            {
int firstCommaIndex = strBillHeader.IndexOf(',', strBillHeader.IndexOf(',') + x);
                    int secondCommaIndex = strBillHeader.IndexOf(',', strBillHeader.IndexOf(',') + (x + 1));
                    string y = strBillHeader.Substring(firstCommaIndex + 1, 1);
                    chargeAmount = Convert.ToInt32(y);
                    //chargeAmount = Int32.Parse(strBillHeader.Substring(firstCommaIndex, secondCommaIndex - firstCommaIndex));
                    TotalChargeAmount += ChargeAmount;

                //string AstrBillHeader = strBillHeader.Split(',')[0];

            }

但由于我在y变量中得到'V',因此无法正常工作。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

如果这些逗号和换行符始终存在,则应该有效:

var lines = strBillHeader.Split(Environment.NewLine).Skip(2);
int total = lines.Split(',').Sum(line => Convert.ToInt32(line[2]));

因此,您将发票拆分为行并丢弃前2个(&#34; Invoice Details&#34;&#34; INVOICE_DATE,INVOICE_DESCRIPTION,VALUE,FROM_DATE,TO_DATE&#34;)。然后你分开逗号上的每一行,取第三个值 - 第一个是日期,第二个是&#34; New Corpbundle 7&#34;第三部分,你的价值。您将该值解析为int,并对整批进行求和。

您可能会发现需要正确过滤掉这些行,而不是假设您可以跳过前两行并使用其余的行,但这应该可以帮助您开始。