如何在 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
,然后求和。
您可能会发现您需要正确过滤掉这些行,而不是仅仅假设您可以跳过前两行并使用其余行,但这应该让您开始。
我需要对字符串变量中的几个值进行求和,
这是我的变量:
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
,然后求和。
您可能会发现您需要正确过滤掉这些行,而不是仅仅假设您可以跳过前两行并使用其余行,但这应该让您开始。