zhanghao传进去后返回zh**gh**

解决方案 »

  1.   

     Regex reg = new Regex(@".{1,2}");
                string s = "zhanghao";
                MatchCollection mc = reg.Matches(s);
                string str=string.Empty ;
                for (int i = 0; i < mc.Count;i++ )
                {
                    if(i %2==0)
                    {
                        str += mc[i];
                    }
                    else
                    {
                        str += "**";
                    }
                }
                MessageBox.Show(str);
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

      static public string Replace(string s)
      {
        char[] c = s.ToCharArray();
        for (int i = 2; i < c.length; i += 4) c[i] = '*';
        for (int i = 3; i < c.length; i += 4) c[i] = '*';
        return new string(c);
      }
      

  3.   

    using System; class Program
    {
      static void Main()
      {
        string s = "zhanghao123456789";
        Console.WriteLine(Replace(s));
        // 输出:zh**gh**12**56**9
      }  static public string Replace(string s)
      {
        char[] c = s.ToCharArray();
        for (int i = 2; i < c.Length; i += 4) c[i] = '*';
        for (int i = 3; i < c.Length; i += 4) c[i] = '*';
        return new string(c);
      }
    }
                                 
      

  4.   

    string result=System.Text.RegularExpressions.Regex.Replace("zhanghao","(?s)(.{2}).{2}","$1**");
      

  5.   

    这样(只用一个for循环)效率还可以提高一些:  static public string Replace(string s)
      {
        char[] c = s.ToCharArray();
        int i;
        for (i = 3; i < c.Length; i += 4) c[i-1] = c[i] = '*';
        if (i > 0 && i == c.Length) c[i-1] = '*';
        return new string(c);
      }
      

  6.   

    顶wuyi8808 
    不过正则比较简单