簡單的中文姓名生成器


項目在測試時,有時候需要生成大量的測試數據,如果是數字之類的還比較好辦,直接用 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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM