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)
从找到正确的数字开始,但结束于没有.我错过了什么?
为什么要使用正则表达式呢?只要使用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在一个地方.)