我想使用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,因此行无法读取它。
实际的程序是仅从选定的组合框中的行包含模式添加文本。
答案 0 :(得分:2)
您的问题是您需要在列表中搜索行匹配模式。您的代码只查看前100行,并查看其中是否包含您想要的文本。 Contains()方法返回一个bool - 而不是一个字符串。
我不完全确定你为什么要随意循环到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);