随机生成常用汉字的 C# 程序(改进版)

using System;
 using System.Text;
 using System.Linq;
 using System.Collections.Generic;
 
 namespace Skyiv.Utils
 {
   static class ChineseCreator
   {
     static void Main(string[] args)
     {
       var count = (args.Length > 0) ? int.Parse(args[0]) : 1800;
       var isGB2312 = args.Length > 1 && args[1] == "from3755";
       var str = isGB2312 ? GetGB2312String() : GetChineseString();
       var random = new Random();
       var sb = new StringBuilder(count);
       for (var len = str.Length; count > 0; count--)
         sb.Append(str[random.Next(len)]);
       Console.WriteLine(sb);
     }
 
     // 现代汉语常用字(共3500个)
     static string GetChineseString()
     {
       var set = new HashSet<char>(GetGB2312String());
       set.ExceptWith("皑胺盎敖翱佰稗镑鲍钡苯甭迸毖敝陛卞斌摈炳钵铂箔帛蔡搽诧谗掣郴骋炽踌瞅躇滁" +
          "搐椽疵茨蹿瘁淬磋傣殆郸惮迪狄翟滇靛凋迭侗恫犊遁掇剁峨娥厄鄂洱珐藩钒酚汾烽氟涪弗釜腑阜讣噶" +
          "嘎赣皋铬庚龚蛊剐圭癸辊骸氦邯郝菏貉阂涸亨弘瑚桓豢磺簧卉烩姬缉汲蓟伎悸笺缄硷槛饯铰桔睫藉疥" +
          "靳烬粳痉炯厩咎狙疽咀踞娟撅攫抉浚郡喀咯亢柯侩匡岿奎馈婪阑谰佬镭磊傈涟撂廖霖拎羚陇掳麓潞禄" +
          "戮挛孪滦纶嘛谩卯酶镁寐醚幂抿牟氖淖妮霓倪拈啮镍涅哦沤啪琶磐耪呸裴抨砒琵毗痞瞥粕莆埔曝沏祁" +
          "讫扦钎仟堑羌蔷橇鞘沁氰邱酋泅龋颧醛炔榷冉壬妊戎茹孺汝阮鳃莎煽汕缮墒韶邵慑砷娠噬仕孰戍舜朔" +
          "嗣巳怂擞僳隋绥蓑獭挞酞坍绦锑嚏腆迢眺烃汀酮湍陀哇烷皖韦惟潍渭挝斡钨吾毋戊硒矽嘻烯汐檄襄霄" +
          "忻惺墟戌嘘眩绚丫焉阉彦佯疡瑶尧噎耶曳铱颐沂彝矣臆裔诣翌荫寅尹臃痈雍恿铀酉釉盂虞俞渝禹峪驭" +
          "垣苑曰郧匝哉札咋詹辗湛漳瘴肇蛰锗甄砧臻帧峙炙痔诌诛瞩拽篆兹淄孜渍鬃邹纂佐柞");
       set.UnionWith("叨蜓筝蜻橘匕丐夭叽吆凫阱芙杈岖鸠沐姊卦拗茉昙肴衩玷茴荞荠盹咧昵咪秕胧奕飒炫" +
          "祠荸莺桦唠蚣蚪蚓唧秫麸捺匾蚯蛉啰铐铛笙笤偎徙翎庵涮悴裆谒雳跛锉掰牍腌猬愕鹉蒿榄楣嗦跷蜈嗤" +
          "馍禀缤榛榕嘁嘀幔箫漩橄嘹蝠蝌蝙鲫憔翩嬉缭薇噩蟥霎踱蹂蟆螃鹦瘾缰檐檩瞭蟋蟀朦臊鳄鳍癞璧簸鬓躏");
       return new string(set.ToArray());
     }
    
     // 国标一级字(共3755个): 区:16-55, 位:01-94, 55区最后5位为空位
     static string GetGB2312String()
     {
       var list = new List<byte>();
       for (var 区 = 16; 区 <= 55; 区++)
         for (int 位2 = (区 == 55) ? 89 : 94, 位 = 1; 位 <= 位2; 位++)
         {
           list.Add((byte)(区 + 0xa0));
           list.Add((byte)(位 + 0xa0));
         }
       return Encoding.GetEncoding("GB2312").GetString(list.ToArray());
     }
   }
 }

猜你喜欢

转载自www.cnblogs.com/zengxh/p/12390238.html