我试图找出如何搜索csv中单元格中找到的特定字符串并返回列号。我已经找到了如何返回行号,但我还需要列。我想到了一种方法,可以在我正在寻找的字符串出现之前计算CSV分隔符的数量。你知道我怎么做吗?这就是我如何阻止行号。
foreach (var match in File.ReadLines(filePath)
.Select((text, index) => new { text, lineNumber = index + 1 })
.Where(x => x.text.Contains("CH1_Value")))
{
Console.WriteLine("{0}: {1}", match.lineNumber, match.text);
}
答案 0 :(得分:0)
您需要将行拆分为列,然后找到匹配的列文本。
var lines = File.ReadLines(filePath);
var lineIdx = 0;
var colIdx = 0;
foreach(var line in lines) {
lineIdx++;
foreach(var column in line.Split(',')) { // split cols here
colIdx++;
if(column.Contains("target_text")) {
// found in {lineIdx} and {colIdx}
}
}
colIdx = 0; // reset col index
}
答案 1 :(得分:0)
以下是使用Linq和匿名类型的一种方法:
List<string> lines = File.ReadLines(filePath).ToList();
string textToSearch = "CH1_Value";
int lineIndex = lines.Select((l, ix) => new { line = l, index = ix })
.FirstOrDefault(l => l.line.Contains(textToSearch)).index;
int columnIndex = lines[lineIndex].Split(',').Select((c, ix) => new { col = c, index = ix })
.FirstOrDefault(c => c.col.Contains(textToSearch)).index;