VB.net-VSTO随机生成不重复N个姓名

2023-12-15 13:51:53 浏览数 (2)

问题

我们在日常进行数据测试中,常常会需要模拟一些数据,如单位、姓名、成绩、得分等,有时候为了想一个姓名,会浪费一点点时间,所以我就设计这样的的一个命令菜单,把常用的姓氏和名字字符组成起来,自从设计好这个,妈妈就不用担心我找不到姓名数据了。

思路:

我在网上取了104个常用的姓氏,再取了264个个常的名字的字,组成数组,再进行取数据生成2字姓名或3字姓名,

操作演示

全屏横屏观看效果更佳

点击命令,选择你要生成数据的区域,确定,生成不重复的姓名

代码

代码语言:javascript复制
    'n个姓名
    Public Function GetRandNameS(myN As Integer) As Array
        Dim idNumbers As New HashSet(Of String)()
        While idNumbers.Count < myN
            Dim id As String = GetOneName()
            If Not idNumbers.Contains(id) Then
                idNumbers.Add(id)
            End If
        End While
        Dim tn As Integer = 0
        Dim ArrOut(idNumbers.Count - 1) As String
        For Each id As String In idNumbers
            ArrOut(tn) = id
            tn  = 1
        Next
        Return ArrOut
    End Function
   '###随机生成一个姓名,由于在网上复制的字符可能有空格,所以要清除空格输出
    Public Function GetOneName() As String
        Dim firstLong As Long = firstNameList.Length
        Dim lastLong As Long = lastNameList.Length
        Dim nameStr As String = firstNameList(random.Next(0, firstNameList.Length))
        Dim lastN As Integer = random.Next(1, 15)
        If lastN >= 2 Then
            For i As Integer = 0 To 1
                nameStr  = lastNameList(random.Next(0, lastNameList.Length))
            Next
        Else
            nameStr  = lastNameList(random.Next(0, lastNameList.Length))
        End If
        Return nameStr.Replace(" ", "")
    End Function

代码解析

GetOneName()函数用于生一个姓名,firstName是姓氏一个字random.Next(1, 15)生成1-14的数字,可能是1位数,就会生成1字名,如果是2位数就生成2字的名,这一步是考虑到1字名的情况,大约15个就会生成一个1字名。nameStr=firstName lastName=姓 名=姓名GetRandNameS(myN As Integer) As Array用HashSet哈希列表取不重复,参数myN是要生成N个姓名,返回值是一个数组Array,再foreach就可以输出啦

对你有帮助请转发给大家免费学习

努力更新中...

0 人点赞