使用scala根据姓氏自动生成一个随机姓名
中国汉字有很多,想要取一个高端大气的名字实在太不容易了,那么我们就根据你的姓氏,来自动为你生成随机姓名,不喜欢重新生成就是,从填空题变成选择题,至少会容易很多。下面直接看代码
// 随机生成一个汉字,这个汉字就是你名字中的一个import scala.util.Randomimport java.io.UnsupportedEncodingExceptiondef getChinese: String = {var str: String = nullvar highPos = 0var 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).byteValuebArr(1) = new Integer(lowPos).byteValuetrystr = 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 = generateChineseNameprintln(s"生成姓名为:${res2}")
这样,一个专属名字就为你打造好了。当然,这个代码的另一个目的还可以用来造一些测试需要的数据,对于姓名这一栏我们就可以通过这样的方式来获取。
