C#Regex找到行的最后一个字符

her*_*ron 0 c# regex visual-studio-2010 visual-studio

我想要实现的是显示以needle字符开头/以字符结尾的行数.

我的代码看起来像那样

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;
Run Code Online (Sandbox Code Playgroud)

从找到正确的数字开始,但结束于没有.我错过了什么?

Jon*_*eet 6

为什么要使用正则表达式呢?只要使用string.EndsWith(和string.StartsWith),除非needle实际正则表达式.(你在问题中提到它是一个"字符"......如果它是用户输入的字符,如果用户输入".",你可能会得到一些意想不到的结果.)

编辑:假设你有needle一个string(例如来自textBox.Text)

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;
Run Code Online (Sandbox Code Playgroud)

(请注意,您可以在这里,如果你想向它分配谓词给一个变量,然后调用提取通用的功能,ReadLines并且Count在一个地方.)