使用 StartsWith() 获取读取文本文件的第二个实例
Get Second Instance of Reading a Text File using StartsWith()
我正在读取文本文件以查找行索引,其中某行以我的标准开头。
原来我想要的标准实际上有两个实例,我想获得第二个。
我将如何修改以下代码以跳过第一个实例并获取第二个实例?
var linesB = File.ReadAllLines(In_EmailBody);
int LineNumberB = 0;
string criteriaB = "T:";
for (LineNumberB = 0; LineNumberB < linesB.Length; LineNumberB++){
if(linesB[LineNumberB].StartsWith(criteriaB))
break;
}
我使用之后的结果并将其与另一个标准进行比较,以找出两个结果之间的行数。
您可以使用以下 LINQ 查询来简化您的任务:
List<string> twoMatchingLines = File.ReadLines(In_EmailBody)
.Where(line = > line.StartsWith(criteriaB))
.Take(2)
.ToList();
现在这两个都在列表中。
string first = twoMatchingLines.ElementAtOrDefault(0); // null if empty
string second = twoMatchingLines.ElementAtOrDefault(1); // null if empty or only one
如果你想使用for循环(你的最后一句话暗示它),你可以计算匹配的行数:
int matchCount = 0;
for (int i = 0; i < linesB.Length; i++)
{
if(linesB[i].StartsWith(criteriaB) && ++matchCount == 2)
{
// here you are
}
}
我正在读取文本文件以查找行索引,其中某行以我的标准开头。
原来我想要的标准实际上有两个实例,我想获得第二个。
我将如何修改以下代码以跳过第一个实例并获取第二个实例?
var linesB = File.ReadAllLines(In_EmailBody);
int LineNumberB = 0;
string criteriaB = "T:";
for (LineNumberB = 0; LineNumberB < linesB.Length; LineNumberB++){
if(linesB[LineNumberB].StartsWith(criteriaB))
break;
}
我使用之后的结果并将其与另一个标准进行比较,以找出两个结果之间的行数。
您可以使用以下 LINQ 查询来简化您的任务:
List<string> twoMatchingLines = File.ReadLines(In_EmailBody)
.Where(line = > line.StartsWith(criteriaB))
.Take(2)
.ToList();
现在这两个都在列表中。
string first = twoMatchingLines.ElementAtOrDefault(0); // null if empty
string second = twoMatchingLines.ElementAtOrDefault(1); // null if empty or only one
如果你想使用for循环(你的最后一句话暗示它),你可以计算匹配的行数:
int matchCount = 0;
for (int i = 0; i < linesB.Length; i++)
{
if(linesB[i].StartsWith(criteriaB) && ++matchCount == 2)
{
// here you are
}
}