RT,想实现从一个文件中读取code,然后将文件中以符号$开始,$结束的所有字符串替换成想要的内容,该如何实现,请高手指点,谢谢
例如:文件中取出的字符串为fjksdjfk$fesdfdds$  asss$dfdsfd$
要将以上红色部分取出,并替换成自己想要的内容
PS:在网上找了一个例子
        /// <summary>
        /// 获得字符串中开始和结束字符串中间得值
        /// </summary>
        /// <param name="str">字符串</param>
        /// <param name="s">开始</param>
        /// <param name="e">结束</param>
        /// <returns></returns>
        public static string GetValue(string filePath, string s, string e)
        {
            string str = System.IO.File.ReadAllText(filePath);
            Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
            return rg.Match(str).Value;
        }
发现只有字符可以实现,符号实现不了

解决方案 »

  1.   


                string reg = "(?<=[$]).*?(?=[$])";
                string sss = "fjksdjfk$fesdfdds$  asss$dfdsfd$";
                foreach (Match item in Regex.Matches(sss, reg))
                {
                    Console.WriteLine(item.Value);
                }
      

  2.   

     string str = "fjksdjfk$fesdfdds$  asss$dfdsfd$";
                Regex.Matches(str, @"\$([^$]*)\$").OfType<Match>().Select(t => t.Groups[1].Value).ToList().ForEach(t => Console.WriteLine(t));
               
      

  3.   

    try...string test = "fjksdjfk$fesdfdds$  asss$dfdsfd$";
    Regex reg = new Regex(@"\$[^$]+\$");
    string result = reg.Replace(test, "$你要替换的内容$");
    richTextBox2.Text = result;
    /*-----输出-----
    fjksdjfk$你要替换的内容$  asss$你要替换的内容$
    */
      

  4.   

    用栈的方式来进行记录读取的$
    附源代码
    static void Main(string[] args)
            {
                Stack<char> sk = new Stack<char>();
                List<string> strNeed = new List<string>();//获取的字符串
                string strOrg = "fjksdjfk$fesdfdds$  asss$dfdsfd$";//原始数据
                string strReplace = "我是被替换的";//
                List<char> cTemp=new List<char>();
                foreach (char c in strOrg)
                {
                    if (c == '$')
                    {
                        if (sk.Count == 1)
                        {
                            strNeed.Add(new string(cTemp.ToArray()));
                            cTemp.Clear();
                            sk.Pop();
                        }
                        else
                        {
                            sk.Push(c);
                        }
                    }
                    else if (sk.Count == 1)
                    {
                        cTemp.Add(c);
                    }
                }
                Console.WriteLine("获取的字符串:");
                foreach (string str in strNeed)
                {
                    Console.WriteLine(str);
                    strOrg= strOrg.Replace(str, strReplace);
                }
                Console.WriteLine("替换后的字符串:");
                Console.WriteLine(strOrg);
                Console.ReadKey();
            }
     
      

  5.   

    正则表达式里,遇到可能是通配符的符号,想直接匹配符号文本,加个转义符试试。
    GetValue(@"fjksdjfk$fesdfdds$  asss$dfdsfd$", @"\$", @"\$");