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

时间:2012-07-04 20:31:31

标签: 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;

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

2 个答案:

答案 0 :(得分:6)

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

编辑:假设您needlestring(例如来自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;

(请注意,如果需要,您可以在此处提取常用功能,只需将谓词分配给变量,然后在一个位置调用ReadLinesCount。)

答案 1 :(得分:1)

删除模式末尾的。*:

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