vlambda博客
学习文章列表

使用scala根据姓氏自动生成一个随机姓名

中国汉字有很多,想要取一个高端大气的名字实在太不容易了,那么我们就根据你的姓氏,来自动为你生成随机姓名,不喜欢重新生成就是,从填空题变成选择题,至少会容易很多。下面直接看代码

// 随机生成一个汉字,这个汉字就是你名字中的一个import scala.util.Randomimport java.io.UnsupportedEncodingException
def getChinese: String = { var str: String = null var highPos = 0 var lowPos = 0 //区码,0xA0打头,从第16区开始,即0xB0=11*16=176,16~55一级汉字,56~87二级汉字 highPos = 176 + Math.abs(Random.nextInt(71)) //位码,0xA0打头,范围第1~94列  lowPos = 161 + Math.abs(Random.nextInt(94))  val bArr = new Array[Byte](2) bArr(0) = new Integer(highPos).byteValue bArr(1) = new Integer(lowPos).byteValue try str = new String(bArr, "GB2312") //区位码组合成汉字 catch { case e: UnsupportedEncodingException => e.printStackTrace() } str}
// 根据姓氏随机生成姓名def generateChineseName = {      val random: Random = new Random(System.currentTimeMillis)      // 此处输入你的姓氏,当然如果对姓氏没要求,可以输入多个,可以随机从这个多个姓氏中选择一个 val Surname = Array("赵")      // val Surname = Array("赵","钱","孙")
val index: Int = random.nextInt(Surname.length) var name = Surname(index) //获得一个随机的姓氏 /* 从常用字中选取一个或两个字作为名 */ if (random.nextBoolean) { name += getChinese + getChinese } else { name += getChinese } name }
val res2 = generateChineseName println(s"生成姓名为:${res2}")

这样,一个专属名字就为你打造好了。当然,这个代码的另一个目的还可以用来造一些测试需要的数据,对于姓名这一栏我们就可以通过这样的方式来获取。