str=12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]我想删除所有中括号中间的所有字符,不论长短。str=12212[]dfdf[]fdfdff[]这个是我要的答案,请问如何实现?

解决方案 »

  1.   

    大致思路:先把str转换成为一个char类型的数组,定义一个stringbuilder,然后遍历char类型的数组,符合条件的添加到stringbuilder中
      

  2.   

    用Regexp替换\[.*\]为[]。using System.Text.RegularExpressions;class TestApp
    {
    static string GetReplace(Match m) 
    {
        return "[]";
    }static Main(string[] Args)
    {
    string text = "12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]";
    string result = Regex.Replace(text, @"\[.*\]",
             new MatchEvaluator(TestApp.GetReplace));
    Console.WriteLine(result);
    }
    }
      

  3.   


                string str = "12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]";
                string result = System.Text.RegularExpressions.Regex.Replace(str, @"\[[^\[\]]*\]", "[]");
                Console.WriteLine(result);
      

  4.   


    static void Main(string[] args)
            {
                string str;
                str="12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]";
                char[] c = str.ToCharArray();
                int length = c.Length;
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < length; i++)
                {
                    sb.Append(c[i]);
                    if (c[i]=='[')
                    {
                        while (c[i]!=']')
                        {
                            i++;
                        }
                        sb.Append(']');
                    }
                }
                Console.WriteLine(sb.ToString());
                Console.ReadKey();
            }
      

  5.   


     string str = "12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]";
            string result = System.Text.RegularExpressions.Regex.Replace(str, @"(?<=\[)[^\[]+(?=\])", "");
            Response.Write(result);
      

  6.   

    string Filter(string s)
            {
                string filtered = string.Empty;
                char[] tmp = s.ToCharArray();
                bool flag = false;
                for (int i = 0; i < tmp.Length; i++)
                {
                    
                    if (tmp[i] == ']' && flag)
                    {
                        flag = false;
                    }
                    if (!flag)
                    {
                        filtered += tmp[i].ToString();
                    }
                    if (tmp[i] == '[' && !flag)
                    {
                        flag = true;
                    }
                }
                return filtered;
            }
    汗自己一个
      

  7.   

     string str = "12212[sdfgdfgdgfsdf]dfdf[aa33454edffgs443]fdfdff[aa333]";
            string result = System.Text.RegularExpressions.Regex.Replace(str, @"(?<=\[)[^\[]+(?=\])", "");
            Response.Write(result);这个可以
      

  8.   

    str = Regex.Replace(str, @"\[[^\]]*\]", "[]");
      

  9.   

    用正则表达式 最方便!
    这东西头疼,具体自已搜索!下面以个笨办法:
    string returnValue = "";
    string[] a = str.Split('[');
            string[] b = new string[2];
            for (int i = 0; i < a.Length; i++)
            {
                b = a[i].Split(']');
                if (b.Length == 1)
                {
                    returnValue += b[0] +"[]";
                }
                else
                {
                    returnValue += b[1] + "[]";
                }
            }
        
            returnValue = returnValue.Substring(0, returnValue.Length - 2);