使用streamReader读取文件。
如果该行以 1
开头,我想使用此行。
该行将如下所示:1,103,1,4454:HH
所以我想在第一个,
之后但在第二个之前抓住这个数字。所以我需要103
并将其分配给 ProductId:
int ProductID;
using (StreamReader sr = new StreamReader(fakeFileToProcess))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (line.StartsWith("1,"))
{
//so line will be 1,103,1,44543:HH
//How do I capture the '103'...something like:
//ProductID = line.read between "1," & ","(next comma)
}
if (line.StartsWith("25"))
{
continue;
}
}
}
您可以使用 String.Split() 函数来实现这一点:
来自 MSDN : String.Split()
返回一个字符串数组,其中包含此字符串中的子字符串 由指定字符串数组的元素分隔。一个 参数指定是否返回空数组元素。
试试这个:
string num = line.Split(',')[1].Trim();
if(int.TryParse(str,out ProductID)
{
//success now ProductID contains int value (103)
}
完整代码:
int ProductID;
using (StreamReader sr = new StreamReader(fakeFileToProcess))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (line.StartsWith("1,"))
{
string num = line.Split(',')[1].Trim();
if(int.TryParse(str,out ProductID)
{
//parsing is successful, now ProductID contains int value (103)
}
}
if (line.StartsWith("25"))
{
continue;
}
}
}
使用字符串。索引 当您有一个如此清晰的分隔数据时。
IndexOf
比将字符串拆分为部分更好,因为您不需要创建字符串数组
if (line.StartsWith("1,"))
{
// search the second comma after the first one....
int pos = line.IndexOf(',', 2);
// for simplicity, do not check if you really have found a second comma....
string id = line.Substring(2, pos - 2);
// Try to convert whatever is between the first comma and the second one..
if(Int32.TryParse(id, out productID))
Console.WriteLine("Got it:" + productID.ToString());
}
string.Split()
方法来实现您想要的。若要转换为int
请使用 int.Parse()
方法。
因此,您可以执行以下操作:
List<string> items = line.Split(',');
ProductID = int.Parse(items[1]);