C#正则表达式查找行的最后一个字符

C#正则表达式查找行的最后一个字符,c#,regex,visual-studio-2010,visual-studio,C#,Regex,Visual Studio 2010,Visual Studio,我试图实现的是显示以pinder字符开始/结束的行数 我的代码是这样的 case "Starting with": count = File.ReadLines(openFileDialog1.FileName) .Count(line => Regex.IsMatch(line, "^" + needle + ".*$")); break; case "Ending with": count = File.ReadLines(ope

我试图实现的是显示以
pinder
字符开始/结束的行数

我的代码是这样的

case "Starting with":
    count = File.ReadLines(openFileDialog1.FileName)
                .Count(line => Regex.IsMatch(line, "^" + needle + ".*$"));
    break;
case "Ending with":
    count = File.ReadLines(openFileDialog1.FileName)
                .Count(line => Regex.IsMatch(line, "^.*" + needle + ".*$"));
    break;

以查找正确的计数开始,但以结束则不正确。我缺少什么?

删除模式末尾的。*:

Regex.IsMatch(line, "^.*" + needle + "$"));

为什么要对此使用正则表达式?只要使用
string.EndsWith
(和
string.StartsWith
),除非
needle
实际上是一个正则表达式。(您在问题中提到它是一个“字符”…如果它是用户输入的字符,例如,如果用户输入“”,您可能会得到一些意外的结果。)

编辑:假设您已将
作为
字符串
(例如,从
textBox.Text


(请注意,如果需要,您可以在这里提取通用功能,只需将谓词赋给一个变量,然后在单个位置调用
ReadLines
Count

您能给我一个代码示例吗?如何在我的代码中实现.EndsWith?@epic_syntax:那么,您如何为我们提供更多关于
needle
的信息?你没有给我们足够的背景。样本数据和预期输出将非常有用。然后,您可以告诉我们为什么很难调用
string.EndsWith
,我可以为您提供更多帮助。指针是用户输入的1个符号。这是一根绳子。例如,如果txt文件看起来像“blabbbbbb”,并且用户输入
a
triest以查找以a结尾的行数,那么它必须显示,2开关,用于组合框搜索类型。用户选择搜索是在行的末尾还是在startings@epic_syntax:那么它只是一个字符?你真的希望它被逐字处理,而不是作为正则表达式的一部分吗?当然,.*不应该出现在
needle
之后,因为当前你的“结尾为”匹配任何包含
needle
的行,而不是只以它结尾。给定的<代码>针是用户提供的一个字符,尽管您可能想考虑Switt的答案,而不是使用正则表达式。
case "Starting with":
    count = File.ReadLines(openFileDialog1.FileName)
                .Count(line => line.StartsWith(needle))
    break;
case "Ending with":
    count = File.ReadLines(openFileDialog1.FileName)
                .Count(line => line.EndsWith(needle))
    break;