0

我想使用 ReadLine 方法从文本中获取指定的行

这是我的代码

for (int p = 0; p < 100; p++)
{
    var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt");
    var lines = await FileIO.ReadLinesAsync(files);
    var pattern = sm.SelectedItem.ToString();
    var sline = lines[p].Contains(pattern);

    lv.items.add(lines[sline]);
}

问题是var sline没有转换成 int 所以行无法读取它。

实际的程序是仅从选定组合框中的包含行的模式中添加文本。

4

1 回答 1

2

您的问题是您需要在列表中搜索行匹配模式。您的代码只是查看前 100 行,看看其中是否包含您想要的文本。Contains() 方法返回一个布尔值,而不是字符串。

我不完全确定你为什么要任意循环到 100?您正在阅读的文件是否总是正好有 100 行?我认为您正在寻找更多类似的东西?您可以完全放弃循环。

var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt");
var lines = await FileIO.ReadLinesAsync(files);
var pattern = sm.SelectedItem.ToString();

// try to look up a line in the list the has the pattern we're looking for in it.
var targetLine = lines.FirstOrDefault(line => line.Contains(pattern));
if (!string.IsNullOrEmpty(targetLine))
    lv.items.add(targetLine);

如果您可能有超过 1 行与模式匹配,您将需要使用 linq 的 Where() 迭代所有这些结果。

foreach (string line in lines.Where(line => line.Contains(pattern))
    lv.items.add(line);
于 2012-12-12T14:38:54.993 回答