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

how to get values from text using .IndexOf and .Substring in c#?

我需要对字符串变量中的几个值进行求和,

这是我的变量:

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'。

任何帮助将不胜感激

如果那些逗号和换行符总是存在,这应该有效:

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

因此,您将发票分成几行并丢弃前 2 行(“Invoice Details”和“INVOICE_DATE,INVOICE_DESCRIPTION,VALUE,FROM_DATE,TO_DATE”)。然后用逗号分隔每一行,并取第三个值——第一个是日期,第二个是“New Corpbundle 7”部分,第三个是你的值。您将该值解析为 int,然后求和。

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