用ID1:NewValue1替换ID1:Value1 ..........

时间:2013-09-11 11:08:19

标签: c#-4.0

我使用了一个代码但得到了一个错误,即 必须在顶级静态类中定义扩展方法; StringHelpers是嵌套类

namespace Figreplace2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FileInfo n = new FileInfo(textBox1.Text);

            StringBuilder newFile = new StringBuilder();

            string temp = " ";

            string[] file = File.ReadAllLines(textBox1.Text);
        }

    public static class StringHelpers
    {
        public static string Replace(this string s)
        {
            Dictionary<string, string> replacements = new Dictionary<string, string>();

            //replacements.Add("ID1", "NewValue");
            replacements.Add("ID2", "NewValue2");
            // ... further replacement entries ...

            foreach (string line in file)
            {
                bool replacementMade = false;
                foreach (var replacement in replacements)
                {
                    if (line.StartsWith(replacement.Key))
                    {
                        string newString = s;
                        temp = line.Replace(string.Format("{0}   :{1}", replacement.Key, replacement.Value));

                        newFile.Append(temp + "\r\n");

                        continue;
                        return newString;
                    }
                    newFile.Append(line + "\r\n");

                    replacementMade = true;

                  //  break;

                }
                if (!replacementMade)
                {
                    File.WriteAllText(@"D:\madhu\test2\23.txt", newFile.ToString());
                }

            }
        }



    }
}

3 个答案:

答案 0 :(得分:1)

错误消息非常明确:您需要将StringHelpers的声明移出Form1类(最有可能是新文件StringHelpers.cs)。

注意:“嵌套”类是另一个类“内部”的类,不允许使用扩展方法。

答案 1 :(得分:1)

正如错误消息所示:“扩展方法必须在顶级静态类中定义; StringHelpers是嵌套类Form1

namespace Figreplace2
{  
    public partial class Form1 : Form
    {
        // get it out of this class
    }

    public static class StringHelpers
    {
        public static string Replace(this string s)
        {
            // ...
        }
    }
}

答案 2 :(得分:1)

您的整个StringHelpers Replace方法搞砸了。

什么是filetempnewFile

他们被使用但未定义