查找文件中最后一次出现的字符串

2023-12-24

我需要从 C# 中的特定字符串中获取最后一次出现的日志跟踪,例如:

lines = File.ReadLines(logPath)
        .SkipWhile(line => !line.Contains("param"))
        .Take(20);

该代码可以工作,但它从日志中第一次出现“param”返回 20 行,而我需要最后一行。


您可以创建一个(扩展)方法,该方法向后遍历源序列,直到找到与某些谓词匹配的项目。当您搜索匹配项时,请保留您已查看过的项目堆栈,然后在找到匹配项时将其返回:

public static IEnumerable<T> SkipUntilLast<T>(
    this IEnumerable<T> source, Func<T, bool> predicate)
{
    var stack = new Stack<T>();

    foreach(var item in source.Reverse())
    {
        if (predicate(item))
            return stack;

        stack.Push(item);
    }

    return Enumerable.Empty<T>();
}

Usage:

lines = File.ReadLines(logPath).
        .SkipUntilLast(line => line.Contains("param"))
        .Take(20);

注意Reverse会将源序列放入缓冲区中,然后堆栈将执行类似的操作(取决于最后一个匹配是否更接近源尾部或头部)。您可以使用所需大小的队列来保留您检查的项目,因此您的案例中的项目不会超过 20 个。您还可以通过移动来决定匹配的项目是否应包含在输出中stack.Push在谓词检查之前。


样本文件

something
param foo
this
is
not
included
param bar
here
we
go
again

跳到包含“param”的最后一行,然后取下三行:

File.ReadLines("samplefile").SkipUntilLast(line => line.Contains("param")).Take(3);

Result:

[ "here", "we", "go" ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找文件中最后一次出现的字符串 的相关文章

  • C# 的最佳替代“错误继续下一步”是什么?

    如果我为 C 代码放置空的 catch 块 它是否与 VB NET 的 On Error Resume Next 语句等效 try C code catch exception 我问这个问题的原因是因为我必须将 VB NET 代码转换为 C
  • 如何在 C++ 中将向量迭代器转换为 int

    我正在寻找 C 向量中的一个元素 当我找到它时 我想以数字形式 整数 浮点数 获取找到的元素的索引 我天真的尝试是这样的 int x int index vector
  • 使一个对象只能被同一程序集中的另一个对象访问?

    每个业务对象都有一个包含 sql 调用的匹配对象 我想限制这些 sql 对象 使其只能由匹配的业务对象使用 如何才能实现这一目标 Update 格雷格提出了关于可测试性的观点 由于 SqlObjects 将包含非常特定于业务流程的 sql
  • 不在焦点时响应键盘? (C#、Vista)

    我正在尝试编写一个应用程序 只要按下 Shift 键 无论当前哪个应用程序具有焦点 它都会做出响应 我尝试过这个SetWindowsHookEx 与GetKeyboardState 但这两种方法仅在应用程序窗口具有焦点时才有效 我需要它在全
  • 进度条没有进展

    我有一个正在更新 sqlserver 中的表的程序 我有一个表单 我想显示其进度 进度条正在递增 但没有显示 我需要为此使用后台工作者吗 我正在做什么的例子 public void updateTable string tableName
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • 将双精度数转换为十六进制 - 代码审查

    我有以下代码 它采用双精度值并将其转换为十六进制表示形式 反之亦然 我想知道它是否存在任何潜在的问题 我是否忽略了某些事情 double hex to double2 string hexString unsigned char byte
  • Wpf TextBlock 中的垂直文本

    是否可以垂直显示 TextBlock 中的文本 以便所有字母彼此堆叠 不使用 LayoutTransform 旋转 还没有人提到使用纯 XAML 垂直堆叠任意字符串的字母 不旋转它们 的明显而简单的方法
  • 何时使用模拟框架?

    因此 我正在使用模拟框架 Moq 进行单元测试 并且想知道何时应该使用模拟框架 以下两个测试之间的优点 缺点是什么 public class Tests Fact public void TestWithMock Arrange var r
  • 从文件夹中删除文件的单元测试方法

    我们有一个方法 它将文件夹名称和天数作为参数 public void Delete string folder int days var files Directory GetFiles folder foreach var file in
  • WCF 服务引用从 WSDL 生成 void 方法

    这是我第一次尝试使用 WCF 所以我猜我做错了什么 我正在尝试访问 WSDL 定义的肥皂服务http confluence atlassian com rpc soap axis confluenceservice v1 wsdl http
  • C# OpenFileDialog 中的 Stackoverflow/CLR 错误

    下面的代码是我的悲伤示例之一 三个 这是一个简单的 OpenFileDialog 调用 会导致程序崩溃 在 XP 上 如果对话框保持打开状态几秒钟 就会发生崩溃 在 Vista 上 如果用户选择 我的电脑 则会发生崩溃 在VS2008中 调
  • 具有多个以逗号分隔的值的宏实际上意味着什么?

    当我在招聘过程中尝试进行技术考试时 我遇到了一个包含宏的问题 如下所示 define random 2 4 这是什么意思 如何为单个宏定义两个带有逗号的值 它实际上取代了所有出现的token https en cppreference co
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • 结构对类型大小的贡献

    我想知道为什么有以下两种类型 struct double re 2 and double re 2 C 中的大小相同吗 struct 不会增加一点大小开销吗 不 它只是将所有元素组合成一个更高级别的元素 其大小只是各个元素大小的总和 加上一
  • 从数据库和文件系统中删除文件

    我有一个表引用我们网络上共享位置中的文件 将文件路径存储在数据库中 我有一个按钮需要从数据库中删除记录并从文件系统中删除文件 foreach var report in reports string filePath report Repo
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置

随机推荐

  • 找不到 CatalogManager.properties

    我的 servlet 应用程序使用 XML 目录 首先我用的是org apache xml resolver tools CatalogResolver 它找到它的配置文件CatalogManager properties under WE
  • NSInMemoryStoreType 与 NSBatchDeleteRequest 不兼容吗?

    我目前正在对与核心数据交互的层进行单元测试 它保存 删除和更新Item目的 然而 我的测试试图保存一些Item然后执行批量删除一直失败 This is Item extension Item MARK Properties NSManage
  • postgres 函数和 BEGIN 事务

    我对 postgres 的功能和事务如何工作有一些疑问 目前我的函数如下所示 CREATE OR REPLACE FUNCTION test function some id character varying RETURNS charac
  • Golang Gin Set Cookie 未在浏览器中设置[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 所以我有一个托管在domainA com的后端golang gin api 我还有一个托管在domainB com的前端Next
  • HTML Agility Pack,在 HTML 文件中创建新行

    Dim codice As String Dim doc As New HtmlDocument Dim coll As HtmlNodeCollection Dim node As HtmlNode Dim nuovo As HtmlNo
  • 如何为没有区域设置属性的 NSFormatter 指定区域设置/语言?

    NSFormatter 有很多专门的子类 CNContactFormatter CNPostalAddressFormatter DRMSFFormatter MKDistanceFormatter NSByteCountFormatter
  • 压缩文件保留目录结构

    我正在使用 codeplex 中的 DotNetZip DLL http dotnetzip codeplex com 来压缩程序中的一些文件 我面临的问题是在压缩文件后 它保留了目录结构 当我提取 zip 文件时 所有父文件夹都会再次创建
  • Onclick CSS 按钮效果

    我正在创建一个 CSS 按钮 并尝试制作一个 onclick 效果 当用户单击该按钮时 它会将按钮文本下推 1px 我的问题是它按下了按钮的整个底部 你将如何进行 div class one p a href Button a p div
  • 从主要活动中禁用片段中的按钮

    我的片段中有 3 个按钮 我想从主要活动中禁用它们 我尝试在replace newfragment之前使用bundle选项 但它产生了其他问题 片段中的按钮可以投射到主要活动吗 像这样的东西 我收到错误无法投射 但我的输入不正确 RedUp
  • Babel 7 中的外部导入不会被转译

    我目前正在将代码库从 Babel 6 迁移到 7 该代码由多个具有自己配置的单独项目组成 The main项目从以下位置导入文件external然而脚本是从导入的external by main没有被转译并且在 意外的令牌导入 上失败 脚本
  • Angular ui 选项卡,每个选项卡都有单独的控制器

    我想制作一个引导选项卡集 每个选项卡都有自己的控制器 谁能指出我应该朝哪个方向走 目前我已经制作了几个不同的控制器 我希望在选项卡集中使用它们 而不是将它们显示为不同的路线 我知道我可以通过在不同的控制器模板中将选项卡集显示为活动的给定控制
  • 如何找到最佳的模糊字符串匹配?

    蟒蛇的新的正则表达式模块 https pypi python org pypi regex支持模糊字符串匹配 大声歌颂 现在 根据文档 The ENHANCEMATCH标志进行模糊匹配尝试以提高拟合度 它找到的下一个匹配项 The BEST
  • 获取用户输入的数字列表

    我尝试使用input Py3 raw input Py2 获取数字列表 但是使用代码 numbers input print len numbers 输入 1 2 3 and 1 2 3给出的结果是7 and 5分别 它似乎将输入解释为字符
  • 在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗?

    假设我将一个字符串插入到表中 如下所示 table insert tbl mystring 然后mystring通过将所有出现的 a 替换为 b 生成input mystring string gsub input a b 将两者合并为一个
  • 使用 JSON.NET 序列化/反序列化动态属性名称

    我有以下课程 public class MyRequest public string Type get set public string Source get set 我想序列化 反序列化以下值Source来自名为值的 JSON 字段T
  • java使用excel打开csv文件

    我正在为大学做一个项目 并制作了一个创建 csv 文件的程序 我希望有一个按钮 您可以单击该按钮 然后使用 Excel 打开 csv 文件 谢谢 知道系统上安装了 MsOffice 您应该能够使用以下命令从命令行打开文档 excel myD
  • Keycloak.loadUserProfile() 上的 Keycloak 403(禁止)

    我是 Keycloak 的新手 我尝试使用以下代码获取用户信息 keycloakAuth loadUserProfile success function profile debugger console log profile error
  • InvalidOperationException:无法为“角色”创建 DbSet,因为该类型未包含在上下文的模型中

    以下解决方案在 net core 1 1中有效 但从1 1升级到2 0后 我收到以下错误 InvalidOperationException 无法为 Role 创建 DbSet 因为该类型未包含在上下文的模型中 当用户尝试登录时 执行以下语
  • 捕获谷歌应用程序引擎日志输出

    如何在管理控制台之外查看 Google App Engine 日志 我正在开发 所以使用dev appserver py 管理控制台并希望在发出记录时查看日志 我想使用标准 Unix 工具 例如 在控制台中监控日志输出 less grep
  • 查找文件中最后一次出现的字符串

    我需要从 C 中的特定字符串中获取最后一次出现的日志跟踪 例如 lines File ReadLines logPath SkipWhile line gt line Contains param Take 20 该代码可以工作 但它从日志