winform,检索指定文件夹下以及其子文件夹以.cs结尾的文件,获取文件中" 和" 之间的,单行且包含中文的字符串,将结果输出到项目文件夹下,以r.txt结尾的文件
时间: 2024-02-17 12:01:00 浏览: 78
好的,我可以为您提供相应的代码,您可以将其添加到您的Winform应用程序中,以实现您的需求。
以下是代码:
```csharp
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace YourNamespace
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string folderPath = textBox1.Text; //指定文件夹路径
string outputPath = Path.Combine(Application.StartupPath, "result.txt"); //输出文件路径
try
{
using (StreamWriter sw = new StreamWriter(outputPath, false, Encoding.UTF8))
{
//遍历文件夹及子文件夹
foreach (string filePath in Directory.GetFiles(folderPath, "*.cs", SearchOption.AllDirectories))
{
//读取文件内容
string fileContent = File.ReadAllText(filePath, Encoding.UTF8);
//正则表达式匹配
string pattern = @"[\u4E00-\u9FA5]+(?=\s*和\s*[\u4E00-\u9FA5]+)";
MatchCollection matches = Regex.Matches(fileContent, pattern, RegexOptions.Singleline);
//输出匹配结果
foreach (Match match in matches)
{
sw.WriteLine(match.Value);
}
}
}
MessageBox.Show("操作成功!");
}
catch (Exception ex)
{
MessageBox.Show("操作失败!\n" + ex.Message);
}
}
}
}
```
其中,`textBox1` 是一个文本框,用于输入指定的文件夹路径;`button1` 是一个按钮,用于触发程序执行;`result.txt` 是输出文件的文件名,可以根据您的需要进行修改。
请注意,由于您要求输出的字符串必须为单行且包含中文的字符串,因此我使用了正则表达式来匹配符合要求的字符串。如果您对正则表达式不熟悉,可以参考以下说明:
- `[\u4E00-\u9FA5]+`:匹配一个或多个中文字符;
- `(?=\s*和\s*[\u4E00-\u9FA5]+)`:使用正向预查匹配两个中文字符串之间的内容,其中 `\s*` 表示零个或多个空白字符,`和` 是要匹配的固定字符串。
希望能够帮助到您!
阅读全文