查找本地文件中的特定字符串并替换代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace ChangeFileName
{
    public partial class jiance : Form
    {
        public int tem = 0;
        public List<string> tem_list = new List<string>();
        public jiance()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = fbd.SelectedPath;
            }
        }


        private void button2_Click(object sender, EventArgs e)
        {
            DirectoryInfo d = new DirectoryInfo(textBox1.Text);
            GetAll(d);
            MessageBox.Show("操作完成");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            tem = 0;
            tem_list = new List<string>();
            DirectoryInfo d = new DirectoryInfo(textBox1.Text);
            ReplaceAll(d);
            MessageBox.Show("操作完成");
            label3.Text = tem.ToString();
            var tem_str="";
            if (tem != 0)
            {
                for (int i = 0; i < tem_list.Count; i++)
                {
                    tem_str += tem_list[i] + "
";
                }
            }
            textBox4.Text = tem_str;
        }

        void GetAll(DirectoryInfo dir)//搜索文件夹中的文件
        {
            FileInfo[] allFile = dir.GetFiles();
            foreach (FileInfo fi in allFile)
            {
                if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css")
                {
                    // var fileName = fi.Name;
                    var fileName = fi.FullName;

                    //防止文本字符中有特殊字符。必须用Encoding.Default
                    StreamReader reader = new StreamReader(fileName, Encoding.Default);

                    String a = reader.ReadToEnd();
                    //将a.hhp文件中bb替换为cc。
                    a = a.Replace(textBox2.Text.Trim() + GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim()) + textBox3.Text.Trim(), "");
                    //a.hhp重命名为b.hhp
                    //防止文本字符中有特殊字符。必须用Encoding.Default
                    StreamWriter readTxt = new StreamWriter(@"b.hhp", false, Encoding.Default);
                    readTxt.Write(a);
                    readTxt.Flush();
                    readTxt.Close();
                    reader.Close();
                    //b.hhp重命名为a.hhp,并删除b.hhp
                    File.Copy(@"b.hhp", fileName, true);
                    File.Delete(@"b.hhp");

                }
            }

            DirectoryInfo[] allDir = dir.GetDirectories();
            foreach (DirectoryInfo d in allDir)
            {
                GetAll(d);
            }
        }

        void ReplaceAll(DirectoryInfo dir)//搜索文件夹中的文件
        {
            FileInfo[] allFile = dir.GetFiles();
            foreach (FileInfo fi in allFile)
            {
                if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css" || fi.Extension == ".txt")
                {
                    // var fileName = fi.Name;
                    var fileName = fi.FullName;

                    //防止文本字符中有特殊字符。必须用Encoding.Default
                    StreamReader reader = new StreamReader(fileName, Encoding.Default);
                    String a = reader.ReadToEnd();

                    var stringtem = GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim());
                    if (!string.IsNullOrEmpty(stringtem))
                    {
                        tem++;
                        tem_list.Add(fileName);
                    }

                } 
              
             
            }

            DirectoryInfo[] allDir = dir.GetDirectories();
            foreach (DirectoryInfo d in allDir)
            {
                ReplaceAll(d);
            }
        }

        /// <summary>
        /// 获得字符串中开始和结束字符串中间得值
        /// </summary>
        /// <param name="str">字符串</param>
        /// <param name="s">开始</param>
        /// <param name="e">结束</param>
        /// <returns></returns> 
        public static string GetValue(string str, string s, string e)
        {
            Regex rg = new Regex("(?<=(" + s + "))[.\s\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
            return rg.Match(str).Value;
        }
    }
}