項目在測試時,有時候需要生成大量的測試數據,如果是數字之類的還比較好辦,直接用 Random 類隨機生成就行了,如果是人名之類的就要麻煩一些,總不能把人的名字也隨機生成為 abc 之類的吧,於是就有了下面這個“中文姓名生成器".
思路其實很簡單,把姓名分為”姓“和”名“兩部分。
”姓“的數據從百家姓中找,”名“的資料也是網上搜搜就行了,比如男孩一般叫”強“、”國“、”浩“。。。女孩一般叫”麗“、”霞“、”燕“等等。然后把這兩部分隨機組合就行了。
看看程序截圖,是不是有模有樣?呵呵

附上代碼和程序 下載程序
public class NameGenerator { public string[] FirstNames { get; set; } public string[] BoyWords { get; set; } public string[] GirlWords { get; set; } Random _rand = new Random((int)DateTime.Now.Ticks); public NameGenerator() { FirstNames = new[] { "趙","錢","孫","李","周","吳","鄭","王","馮","陳","褚","衛","蔣","沈","韓","楊","朱","秦","尤","許","何","呂","施","張","孔","曹","嚴","華","金","魏","陶","姜","戚","謝","鄒","水","昌","馬","苗","鳳","花","方","俞","任","袁","柳","鮑","史","唐","費","岑","薛","雷","賀","倪","湯","殷","羅","畢","郝","鄔","安","常","樂","於","時","齊","康","伍","余","元","顧","孟","黃", "歐陽","夏侯","皇甫","上官"}; BoyWords = new[] { "剛","強","仁","發","民","國","忠","藝","文","德","志","智","輝","華","軍","生","裕","健","炎","宏","毅","堅","石","超","鵬","亮","錦","家","春","磊","勇","正","東","南","斌","武","友","祖","頌","小","宇","興","波","榮","峰","祥","思","振","海","凱","遠","漢","橋","松","柏","利","大"}; GirlWords = new[] { "花","華","芳","芬","燕","虹","菁","麗","娟","莘","蘋","紅","玉","妙","丹","芸","香","蕾","蘭","慧","玲","靜","茹","怡","紫"}; } public string generate(string first_name, int sex, int length) { var index = 0; if (string.IsNullOrEmpty(first_name)) { index = _rand.Next(FirstNames.Length); first_name = FirstNames[index]; } var name = first_name; if (sex < 0 || sex > 1) { sex = _rand.Next(2); } if (length < 1) { length = _rand.Next(2) + 1; } for (int i = 0; i < length; i++) { if (sex == 0) { index = _rand.Next(BoyWords.Length); name += BoyWords[index]; } else { index = _rand.Next(GirlWords.Length); name += GirlWords[index]; } } return name; }
