“122222####3333###sda”
我想让#只显示一次,显示效果如下
“122222#3333#sda”

解决方案 »

  1.   

    string s = "122222####3333###sda";
    string r = Regex.Replace(s, @"#+", "#");
    Response.Write(r);
      

  2.   

    string[] str=“122222####3333###sda”.split("#");
    private string[] getOnly(string[] strArry)
            {
                List<string> list = new List<string>();
                foreach (string str in strArry)
                {
                    if (!list.Contains(str))
                    {
                        list.Add(str);
                    }
                }            string strA = "";
                foreach (string s in list)
                {
                    strA += s + ",";
                }
                string[] arry = strA.Split(',');
                return arry;
            }string[] s=getOnly(str);
    for(int i=0;i<s.length;i++)
    {
       if(s[i]!="")
       {
          string aa+=s[i];
       }
    }
      

  3.   

    string result = Regex.Replace(yourStr,@"(\D)\1+","$1");
      

  4.   

    追求效率吗?
    如果追求效率的话用这个吧,我为了效率而写的。比正则方法快1到3倍吧
    用时是 Regex.Replace(s, @"#+", "#"); 的一半
    是 Regex.Replace(yourStr,@"(\D)\1+","$1");的四分之一
    string TrimChar(string str,char c) 
            {
                StringBuilder builder = new StringBuilder();
                bool lastOneflag = false;
                for (int i = 0; i < str.Length;i++ )
                {
                    if (str[i] != c)
                    {
                        builder.Append(str[i]);
                        lastOneflag = false;
                    }
                    else 
                    {
                        if (lastOneflag == true)
                        {
                            continue;
                        }
                        else 
                        {
                            builder.Append(str[i]);
                            lastOneflag = true;
                        }
                    }
                }
                return builder.ToString();
            }