字符串:a我爱9只cat和1010条鱼
生成后:AWAJZCHYTY
过程:单个汉字则直接生成该汉字拼音的首字母,英文单词则直接生成该单词的首字母,同时若在没有空格的情况下英文单词只有一个字母,则直接生成该字母;单个数字,则直接生成该数字的汉语拼音的首字母,若是连续的数字,如上面的1010则要生成第一个数字的汉语拼音首字母,如上面的1010只生成Y(1的汉语拼音首字母)。

解决方案 »

  1.   

    正则获取字母,数字,中文 
    匹配中文:[\u4e00-\u9fa5]  
    英文字母:[a-zA-Z] 
    [0-9] Regex reg = new Regex( "^[\u4e00-\u9fa5]+$ ");  
    中文首字母
    http://topic.csdn.net/u/20100206/07/d365743f-b244-401b-9216-80ed76166775.html
      

  2.   

     string str = "a我爱9只cat和1010条鱼";
     Regex regExp = new Regex(@"(?is)((?<chinese>[\u4E00-\u9FA5]+)|(?<letter>[a-z]+)|(?<num>\d+))");//|$
                MatchCollection mc = regExp.Matches(str);
                foreach (Match m in mc)
                {
                    if (m.Groups["chinese"].Success) Console.Write(m.Groups["chinese"].Value + "\n");
                    if (m.Groups["letter"].Success) Console.Write(m.Groups["letter"].Value + "\n");
                    if (m.Groups["num"].Success)Console.Write(m.Groups["num"].Value + "\n");
                }
    a
    我爱
    9

    cat

    1010
    条鱼
      

  3.   

    a我cat你

    a我cat1你
    生成的密文一样。
      

  4.   

    取首字母很简单...但是就像wuyazhe说的那个问题,你这个编码规则本身是很成问题的...压根儿就行不通...