日期:2014-05-17  浏览次数:20840 次

100分求解!如何替换一串字符串中所有以..开始,以..结束的两个符号中间的字符串
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;
        }

发现只有字符可以实现,符号实现不了

------解决方案--------------------

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

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

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

------解决方案--------------------

楼上 +1
------解决方案--------------------
用栈的方式来进行记录读取的$
附源代码
static void Main(string[] args)
        {