如何处理啊?~~
把该字符串中的中文字符用*替换~~~
谢谢大家了!!~

解决方案 »

  1.   

    兄弟,看我的原创代码,结贴吧。string str = "abcde这是中文ksflasflal";
    for(int i=0; i<str.Length; i++)
    {
      if (IsChineseChar(str[i])
      {
         str[i] = '*';
      }
    }bool IsChineseChar(char ch)
      {
       byte[] bytes = System.Text.Encoding.GetEncoding(&quot;gb2312&quot;).GetBytes(ch.ToString()); 
       
       if (bytes.Length != 2)
       {
        return false;
       }   int zone = bytes[0];//刚好是“区”的值
       int num  = bytes[1];//刚即时“位”的值
       
       return (zone &gt;= 0xB0 &amp;&amp; zone &lt;=0xF7) &amp;&amp; (num &gt;0xA0 &amp;&amp; num&lt;0xFD);
      }
      

  2.   

    楼主,上面函数出了点“乱码”,用这个。bool IsChineseChar(char ch)
      {
       byte[] bytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(ch.ToString()); 
       
       if (bytes.Length != 2)
       {
        return false;
       }   int zone = bytes[0];//刚好是“区”的值
       int num  = bytes[1];//刚即时“位”的值
       
       return (zone >= 0xB0 && zone <=0xF7) && (num >0xA0 && num<0xFD);
      }
      

  3.   

    using System;
    using System.Text.RegularExpressions;class Test
    {
      static void Main()
      {
        string s0 = "This 是 a 中文 string.";
        Console.WriteLine(s0);
        string s1 = (new Regex(@"[\u4e00-\u9fa5]")).Replace(s0, "*");
        Console.WriteLine(s1);
      }
    }/* 程序输出如下:
    This 是 a 中文 string.
    This * a ** string.
    */
      

  4.   

    是所有gb2312 汉字。如果是中文数字,你加入判断
    if ("1234567890".IndexOf(str[i]} >=0)
    {
      str[i] = '*';
    }
      

  5.   

    楼上的兄弟!!非常感谢!!
    但是我有很多地方不懂,比如:
    System.Text.Encoding.GetEncoding(&quot;gb2312&quot;).GetBytes(ch.ToString());
    中的(&quot;gb2312&quot;)还有:return (zone &gt;= 0xB0 &amp;&amp; zone &lt;=0xF7) &amp;&amp; (num &gt;0xA0 &amp;&amp; num&lt;0xFD);
    这些是什么意思啊?
    可否解释一下?马上给分!!
      

  6.   

    楼主,上面函数出了点“乱码”,用这个。bool IsChineseChar(char ch)
    {
    byte[] bytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(ch.ToString()); if (bytes.Length != 2)
    {
    return false;
    }int zone = bytes[0];//刚好是“区”的值
    int num = bytes[1];//刚即时“位”的值return (zone >= 0xB0 && zone <=0xF7) && (num >0xA0 && num<0xFD);
    }
      

  7.   

    to  wuyi8808(air|skyiv.com) :
    请问这个是什么意思啊:(new Regex(@"[\u4e00-\u9fa5]")).
      

  8.   

    用正则表达式一句话就解决问题了:
    string s1 = (new Regex(@"[\u4e00-\u9fa5]")).Replace(s0, "*");完整的程序我前面已经给出了,再次贴出如下:
    ----------------------------------------------------------
    using System;
    using System.Text.RegularExpressions;class Test
    {
      static void Main()
      {
        string s0 = "This 是 a 中文 string.";
        Console.WriteLine(s0);
        string s1 = (new Regex(@"[\u4e00-\u9fa5]")).Replace(s0, "*");
        Console.WriteLine(s1);
      }
    }/* 程序输出如下:
    This 是 a 中文 string.
    This * a ** string.
    */
      

  9.   

    正则表达式 @"[\u4e00-\u9fa5]" 可以匹配所有的中文字符.至于 Regex 请参见MSDN中关于 System.Text.RegularExpressions.Regex 类的说明.
      

  10.   

    如果正则表达式要多次使用,则可以:
    Regex regex = (new Regex(@"[\u4e00-\u9fa5]"));
    完整的程序如下:
    -----------------------------------------------------
    using System;
    using System.Text.RegularExpressions;class Test
    {
      static void Main()
      {
        Regex regex = (new Regex(@"[\u4e00-\u9fa5]"));
        Console.WriteLine(regex.Replace("中文HAHA,还是中文!", "*"));
        Console.WriteLine(regex.Replace("This is English!", "*"));
        Console.WriteLine(regex.Replace("And国家is國家", "*"));
      }
    }/* 程序输出如下:
    **HAHA,****!
    This is English!
    And**is**
    */
      

  11.   

    正则表达式 @"[\u4e00-\u9fa5]"这里面的字符是什么意思啊?
      

  12.   

    正则表达式 @"[\u4e00-\u9fa5]" 表示匹配 Unicode 编码 4e00 - 9fa5 的字符,这个范围内的字符就是中文字符了,不包括中文标点。如果要匹配所有的非单字节字符,可以使用正则表达式 @"[^\x00-\xff]",它匹配 00 - ff 之外所有字符,包括中文字符、中文标点,以及其他的多字节字符(如韩文)。另,正则表达式 @"\d" 匹配所有数字字符,@"[0-9A-Fa-f]" 匹配所有16进制数字,等等。
      

  13.   

    to wuyi8808(air|skyiv.com):
       其实我的目的就是只想用单字节字符,那么我用@"[^\x00-\xff]"吗?里面有“^”的吗?
      

  14.   

    你们说,我该怎么感谢你们好呢?
    weisunding(鼎鼎),获得最有自信奖!
    wuyi8808(air|skyiv.com),获得最佳技术奖!
    不过大家都有一个共同的奖——最佳热心奖!!!!
    真的很感谢你们!!!MSN: [email protected]
      

  15.   

    其实我的目的就是只想用单字节字符,那么我用@"[^\x00-\xff]"吗?里面有“^”的吗?
    ---------------------------------------------------------------------------如果是只想保留字符串中的单字节字符,而把非单字节字符用*替换,以下语句就可以了:
    string s1 = (new Regex(@"[^\x00-\xff]")).Replace(s0, "*");正则表达式的[]里面的^是表示除外的意思,如:
    @"[0-9^357]" 表示 0-9 中除 3 5 7 外的字符,匹配 0 1 2 4 6 8 9 这几个字符。
      

  16.   

    呵呵,我已经试过了,非常谢谢!!
    加我MSN吧!!~
    结贴了!