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