Java 生成随机中英文名称(返回顶部)
最编程
2024-07-07 08:14:30
...
基本介绍
一个生成随机中英文姓名的 java 小项目,已打包jar(未混淆)。
这个 jar 的姓名资源是直接在类文件中使用数组存储的。下一篇将使用 json 的方式存取姓名资源。
点击下载
效果预览:
源码地址:https://gitee.com/mingyueyixi/RandomName/tree/master/SimpleName
其他说明
生成中文部分:
首先,定义了一堆姓氏:
class SourceZh {
static String[] firstNameInside = {
"赵" , "钱" , "孙" , "李" , "周" , "吴" , "郑" , "王",
"冯" , "陈" , "楮" , "卫" , "蒋" , "沈" , "韩" , "杨",
"朱" , "秦" , "尤" , "许" , "何" , "吕" , "施" , "张",
"孔" , "曹" , "严" , "华" , "金" , "魏" , "陶" , "姜",
"戚" , "谢" , "邹" , "喻" , "柏" , "水" , "窦" , "章",
"云" , "苏" , "潘" , "葛" , "奚" , "范" , "彭" , "郎",
"鲁" , "韦" , "昌" , "马" , "苗" , "凤" , "花" , "方",
"俞" , "任" , "袁" , "柳" , "酆" , "鲍" , "史" , "唐",
"费" , "廉" , "岑" , "薛" , "雷" , "贺" , "倪" , "汤",
"滕" , "殷" , "罗" , "毕" , "郝" , "邬" , "安" , "常",
"乐" , "于" , "时" , "傅" , "皮" , "卞" , "齐" , "康",
"伍" , "余" , "元" , "卜" , "顾" , "孟" , "平" , "黄",
"和" , "穆" , "萧" , "尹" , "姚" , "邵" , "湛" , "汪",
"祁" , "毛" , "禹" , "狄" , "米" , "贝" , "明" , "臧",
"计" , "伏" , "成" , "戴" , "谈" , "宋" , "茅" , "庞",
"熊" , "纪" , "舒" , "屈" , "项" , "祝" , "董" , "梁",
"杜" , "阮" , "蓝" , "闽" , "席" , "季" , "麻" , "强",
"贾" , "路" , "娄" , "危" , "江" , "童" , "颜" , "郭",
"梅" , "盛" , "林" , "刁" , "锺" , "徐" , "丘" , "骆",
"高" , "夏" , "蔡" , "田" , "樊" , "胡" , "凌" , "霍",
"虞" , "万" , "支" , "柯" , "昝" , "管" , "卢" , "莫",
"经" , "房" , "裘" , "缪" , "干" , "解" , "应" , "宗",
"丁" , "宣" , "贲" , "邓" , "郁" , "单" , "杭" , "洪",
"包" , "诸" , "左" , "石" , "崔" , "吉" , "钮" , "龚",
"程" , "嵇" , "邢" , "滑" , "裴" , "陆" , "荣" , "翁",
"荀" , "羊" , "於" , "惠" , "甄" , "麹" , "家" , "封",
"芮" , "羿" , "储" , "靳" , "汲" , "邴" , "糜" , "松",
"井" , "段" , "富" , "巫" , "乌" , "焦" , "巴" , "弓",
"牧" , "隗" , "山" , "谷" , "车" , "侯" , "宓" , "蓬",
"全" , "郗" , "班" , "仰" , "秋" , "仲" , "伊" , "宫",
"宁" , "仇" , "栾" , "暴" , "甘" , "斜" , "厉" , "戎",
"祖" , "武" , "符" , "刘" , "景" , "詹" , "束" , "龙",
"叶" , "幸" , "司" , "韶" , "郜" , "黎" , "蓟" , "薄",
"印" , "宿" , "白" , "怀" , "蒲" , "邰" , "从" , "鄂",
"索" , "咸" , "籍" , "赖" , "卓" , "蔺" , "屠" , "蒙",
"池" , "乔" , "阴" , "郁" , "胥" , "能" , "苍" , "双",
"闻" , "莘" , "党" , "翟" , "谭" , "贡" , "劳" , "逄",
"姬" , "申" , "扶" , "堵" , "冉" , "宰" , "郦" , "雍",
"郤" , "璩" , "桑" , "桂" , "濮" , "牛" , "寿" , "通",
"边" , "扈" , "燕" , "冀" , "郏" , "浦" , "尚" , "农",
"温" , "别" , "庄" , "晏" , "柴" , "瞿" , "阎" , "充",
"慕" , "连" , "茹" , "习" , "宦" , "艾" , "鱼" , "容",
"向" , "古" , "易" , "慎" , "戈" , "廖" , "庾" , "终",
"暨" , "居" , "衡" , "步" , "都" , "耿" , "满" , "弘",
"匡" , "国" , "文" , "寇" , "广" , "禄" , "阙" , "东",
"欧" , "殳" , "沃" , "利" , "蔚" , "越" , "夔" , "隆",
"师" , "巩" , "厍" , "聂" , "晁" , "勾" , "敖" , "融",
"冷" , "訾" , "辛" , "阚" , "那" , "简" , "饶" , "空",
"曾" , "毋" , "沙" , "乜" , "养" , "鞠" , "须" , "丰",
"巢" , "关" , "蒯" , "相" , "查" , "后" , "荆" , "红",
"游" , "竺" , "权" , "逑" , "盖" , "益" , "桓" , "公",
"万俟" , "司马" , "上官" , "欧阳",
"夏侯" , "诸葛" , "闻人" , "东方",
"赫连" , "皇甫" , "尉迟" , "公羊",
"澹台" , "公冶" , "宗政" , "濮阳",
"淳于" , "单于" , "太叔" , "申屠",
"公孙" , "仲孙" , "轩辕" , "令狐",
"锺离" , "宇文" , "长孙" , "慕容",
"鲜于" , "闾丘" , "司徒" , "司空",
"丌官" , "司寇" , "仉" , "督" , "子车",
"颛孙" , "端木" , "巫马" , "公西",
"漆雕" , "乐正" , "壤驷" , "公良",
"拓拔" , "夹谷" , "宰父" , "谷梁",
"晋" , "楚" , "阎" , "法" , "汝" , "鄢" , "涂" , "钦",
"段干" , "百里" , "东郭" , "南门",
"呼延" , "归" , "海" , "羊舌" , "微生",
"岳" , "帅" , "缑" , "亢" , "况" , "后" , "有" , "琴",
"梁丘" , "左丘" , "东门" , "西门",
"商" , "牟" , "佘" , "佴" , "伯" , "赏" , "南宫",
"墨" , "哈" , "谯" , "笪" , "年" , "爱" , "阳" , "佟",
"第五" , "言" , "福"
};
}
然后,随机生成中文名字,并且去掉一些繁体中文,拼接成中文姓名:
import java.io.UnsupportedEncodingException;
import java.util.Random;
import com.lu.sn.RandomNameI;
public class SimpleZhName implements RandomNameI{
/**
* 构造方法
*/
public SimpleZhName() {
random = new Random();
}
private Random random;
/**
* 使用数组的方式存储姓氏
* @return 数组中随机下标的字符串
*/
public String insideFirstName() {
int i = random.nextInt(SourceZh.firstNameInside.length);//[0,n)
return SourceZh.firstNameInside[i];
}
public String[] getFirstNameInside() {
return SourceZh.firstNameInside;
}
/**
* 去掉了相当多的繁体字
* @return 随机生成一个汉字
*/
private String insideSimpleLastName(){
int hight,low;//二进制的高低位
Random random= new Random();
StringBuilder sBuilder = new StringBuilder();
int lastLenght = 1+random.nextInt(2);
for(int i=0;i<lastLenght;i++) {
hight = 176+random.nextInt(39);
low = 161+random.nextInt(93);
byte[]han = new byte[2];
han[0]= new Integer(hight).byteValue();
han[1]= new Integer(low).byteValue();
try {
sBuilder.append(new String(han,"gbk"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return sBuilder.toString();
}
/**
* @return 全名
*/
@Override
public String getFullName() {
return insideFirstName()+insideSimpleLastName();
}
/**
* @return 数组,[姓,名]
*/
@Override
public String[] getSplitName() {
String[] splitName = {insideFirstName(),insideSimpleLastName()};
return splitName;
}
@Override
public String getSimpleName() {
return insideSimpleLastName();
}
}
最后,封装使用工具类:
public class SimpleZhNameUtil {
private final static class Holder{
private static final SimpleZhName SIMPLE_ZH_NAME = new SimpleZhName();
}
/**
* @return 全名
*/
public static String getFullName() {
return Holder.SIMPLE_ZH_NAME.getFullName();
}
/**
* @return 数组,[姓,名]
*/
public static String[] getSplitName() {
return Holder.SIMPLE_ZH_NAME.getSplitName();
}
public static String getSimpleName() {
return Holder.SIMPLE_ZH_NAME.getSimpleName();
}
}
英文姓名生成原理中文一样,不过,英文的姓和名不知如何区分,目前只随机抽取。
同时,英文名应当具备中文译名。所以,应该准备两种姓名资源:
英文名:
class SourceEn {
static String[] namesEn = {
"Aaron",
"Abel",
"Abraham",
"Adam",
"Adrian",
"Aidan",
"Alva",
"Alex",
"Alexander",
"Alan",
"Albert",
"Alfred",
"Andrew",
"Andy",
"Angus",
"Anthony",
"Apollo",
"Arnold",
"Arthur",
"August",
"Austin",
"Ben",
"Benjamin",
"Bert",
"Benson",
"Bill",
"Billy",
"Blake",
"Bob",
"Bobby",
"Brad",
"Brandon",
"Brant",
"Brent",
"Brian",
"Brown",
"Bruce",
"Caleb",
"Cameron",
"Carl",
"Carlos",
"Cary",
"Caspar",
"Cecil",
"Charles",
"Cheney",
"Chris",
"Christian",
"Christopher",
"Clark",
"Cliff",
"Cody",
"Cole",
"Colin",
"Cosmo",
"Daniel",
"Denny",
"Darwin",
"David",
"Dennis",
"Derek",
"Dick",
"Donald",
"Douglas",
"Duke",
"Dylan",
"Eddie",
"Edgar",
"Edison",
"Edmund",
"Edward",
"Edwin",
"Elijah",
"Elliott",
"Elvis",
"Eric",
"Ethan",
"Eugene",
"Evan",
"Enterprise",
"Ford",
"Francis",
"Frank",
"Franklin",
"Fred",
"Gabriel",
"Gaby",
"Garfield",
"Gary",
"Gavin",
"Geoffrey",
"George",
"Gino",
"Glen",
"Glendon",
"Hank",
"Hardy",
"Harrison",
"Harry",
"Hayden",
"Henry",
"Hilton",
"Hugo",
"Hunk",
"Howard",
"Henry",
"Ian",
"Ignativs",
"Ivan",
"Isaac",
"Isaiah",
"Jack",
"Jackson",
"Jacob",
"James",
"Jason",
"Jay",
"Jeffery",
"Jerome",
"Jerry",
"Jesse",
"Jim",
"Jimmy",
"Joe",
"John",
"Johnny",
"Jonathan",
"Jordan",
"Jose",
"Joshua",
"Justin",
"Keith",
"Ken",
"Kennedy",
"Kenneth",
"Kenny",
"Kevin",
"Kyle",
"Lance",
"Larry",
"Laurent",
"Lawrence",
"Leander",
"Lee",
"Leo",
"Leonard",
"Leopold",
"Leslie",
"Loren",
"Lori",
"Lorin",
"Louis",
"Luke",
"Marcus",
"Marcy",
"Mark",
"Marks",
"Mars",
"Marshal",
"Martin",
"Marvin",
"Mason",
"Matthew",
"Max",
"Michael",
"Mickey",
"Mike",
"Nathan",
"Nathaniel",
"Neil",
"Nelson",
"Nicholas",
"Nick",
"Noah",
"Norman",
"Oliver",
"Oscar",
"Owen",
"Patrick",
"Paul",
"Peter",
"Philip",
"Phoebe",
"Quentin",
"Randall",
"Randolph",
"Randy",
"Ray",
"Raymond",
"Reed",
"Rex",
"Richard",
"Richie",
"Riley",
"Robert",
"Robin",
"Robinson",
"Rock",
"Roger",
"Ronald",
"Rowan",
"Roy",
"Ryan",
"Sam",
"Sammy",
"Samuel",
"Scott",
"Sean",
"Shawn",
"Sidney",
"Simon",
"Solomon",
"Spark",
"Spencer",
"Spike",
"Stanley",
"Steve",
"Steven",
"Stewart",
"Stuart",
"Terence",
"Terry",
"Ted",
"Thomas",
"Tim",
"Timothy",
"Todd",
"Tommy",
"Tom",
"Thomas",
"Tony",
"Tyler",
"Ultraman",
"Ulysses",
"Van",
"Vern",
"Vernon",
"Victor",
"Vincent",
"Warner",
"Warren",
"Wayne",
"Wesley",
"William",
"Willy",
"Zack",
"Zachary",
"Abigail",
"Abby",
"Ada",
"Adelaide",
"Adeline",
"Alexandra",
"Ailsa",
"Aimee",
"Alexis",
"Alice",
"Alicia",
"Alina",
"Allison",
"Alyssa",
"Amanda",
"Amy",
"Amber",
"Anastasia",
"Andrea",
"Angel",
"Angela",
"Angelia",
"Angelina",
"Ann",
"Anna",
"Anne",
"Annie",
"Anita",
"Ariel",
"April",
"Ashley",
"Audrey",
"Aviva",
"Barbara",
"Barbie",
"Beata",
"Beatrice",
"Becky",
"Bella",
"Bess",
"Bette",
"Betty",
"Blanche",
"Bonnie",
"Brenda",
"Brianna",
"Britney",
"Brittany",
"Camille",
"Candice",
"Candy",
"Carina",
"Carmen",
"Carol",
"Caroline",
"Carry",
"Carrie",
"Cassandra",
"Cassie",
"Catherine",
"Cathy",
"Chelsea",
"Charlene",
"Charlotte",
"Cherry",
"Cheryl",
"Chloe",
"Chris",
"Christina",
"Christine",
"Christy",
"Cindy",
"Claire",
"Claudia",
"Clement",
"Cloris",
"Connie",
"Constance",
"Cora",
"Corrine",
"Crystal",
"Daisy",
"Daphne",
"Darcy",
"Dave",
"Debbie",
"Deborah",
"Debra",
"Demi",
"Diana",
"Dolores",
"Donna",
"Dora",
"Doris",
"Edith",
"Editha",
"Elaine",
"Eleanor",
"Elizabeth",
"Ella",
"Ellen",
"Ellie",
"Emerald",
"Emily",
"Emma",
"Enid",
"Elsa",
"Erica",
"Estelle",
"Esther",
"Eudora",
"Eva",
"Eve",
"Evelyn",
"Fannie",
"Fay",
"Fiona",
"Flora",
"Florence",
"Frances",
"Frederica",
"Frieda",
"Flta",
"Gina",
"Gillian",
"Gladys",
"Gloria",
"Grace",
"Grace",
"Greta",
"Gwendolyn",
"Hannah",
"Haley",
"Hebe",
"Helena",
"Hellen",
"Henna",
"Heidi",
"Hillary",
"Ingrid",
"Isabella",
"Ishara",
"Irene",
"Iris",
"Ivy",
"Jacqueline",
"Jade",
"Jamie",
"Jane",
"Janet",
"Jasmine",
"Jean",
"Jenna",
"Jennifer",
"Jenny",
"Jessica",
"Jessie",
"Jill",
"Joan",
"Joanna",
"Jocelyn",
"Joliet",
"Josephine",
"Josie",
"Joy",
"Joyce",
"Judith",
"Judy",
"Julia",
"Juliana",
"Julie",
"June",
"Karen",
"Karida",
"Katherine",
"Kate",
"Kathy",
"Katie",
"Katrina",
"Kay",
"Kayla",
"Kelly",
"Kelsey",
"Kimberly",
"Kitty",
"Lareina",
"Lassie",
"Laura",
"Lauren",
"Lena",
"Lydia",
"Lillian",
"Lily",
"Linda",
"lindsay",
"Lisa",
"Liz",
"Lora",
"Lorraine",
"Louisa",
"Louise",
"Lucia",
"Lucy",
"Lucine",
"Lulu",
"Lydia",
"Lynn",
"Mabel",
"Madeline",
"Maggie",
"Mamie",
"Manda",
"Mandy",
"Margaret",
"Mariah",
"Marilyn",
"Martha",
"Mavis",
"Mary",
"Matilda",
"Maureen",
"Mavis",
"Maxine",
"May",
"Mayme",
"Megan",
"Melinda",
"Melissa",
"Melody",
"Mercedes",
"Meredith",
"Mia",
"Michelle",
"Milly",
"Miranda",
"Miriam",
"Miya",
"Molly",
"Monica",
"Morgan",
"Nancy",
"Natalie",
"Natasha",
"Nicole",
"Nikita",
"Nina",
"Nora",
"Norma",
"Nydia",
"Octavia",
"Olina",
"Olivia",
"Ophelia",
"Oprah",
"Pamela",
"Patricia",
"Patty",
"Paula",
"Pauline",
"Pearl",
"Peggy",
"Philomena",
"Phoebe",
"Phyllis",
"Polly",
"Priscilla",
"Quentina",
"Rachel",
"Rebecca",
"Regina",
"Rita",
"Rose",
"Roxanne",
"Ruth",
"Sabrina",
"Sally",
"Sandra",
"Samantha",
"Sami",
"Sandra",
"Sandy",
"Sarah",
"Savannah",
"Scarlett",
"Selma",
"Selina",
"Serena",
"Sharon",
"Sheila",
"Shelley",
"Sherry",
"Shirley",
"Sierra",
"Silvia",
"Sonia",
"Sophia",
"Stacy",
"Stella",
"Stephanie",
"Sue",
"Sunny",
"Susan",
"Tamara",
"Tammy",
"Tanya",
"Tasha",
"Teresa",
"Tess",
"Tiffany",
"Tina",
"Tonya",
"Tracy",
"Ursula",
"Vanessa",
"Venus",
"Vera",
"Vicky",
"Victoria",
"Violet",
"Virginia",
"Vita",
"Vivian"
};
}
对应中文译名:
public class TranslateZh {
static String[] namesZh = {
"亚伦",
"亚伯",
"亚伯拉罕",
"亚当",
"艾德里安",
"艾登",
"阿尔瓦",
"亚历克斯",
"亚历山大",
"艾伦",
"艾伯特",
"阿尔弗雷德",
"安德鲁",
"安迪",
"安格斯",
"安东尼",
"阿波罗",
"阿诺德",
"亚瑟",
"奥古斯特",
"奥斯汀",
"本",
"本杰明",
"伯特",
"本森",
"比尔",
"比利",
"布莱克",
"鲍伯",
"鲍比",
"布拉德",
"布兰登",
"布兰特",
"布伦特",
"布赖恩",
"布朗",
"布鲁斯",
"迦勒",
"卡梅伦",
"卡尔",
"卡洛斯",
"凯里",
"卡斯帕",
"塞西",
"查尔斯",
"采尼",
"克里斯",
"克里斯蒂安",
"克里斯多夫",
"克拉克",
"柯利弗",
"科迪",
"科尔",
"科林",
"科兹莫",
"丹尼尔",
"丹尼",
"达尔文",
"大卫",
"丹尼斯",
"德里克",
"狄克",
"唐纳德",
"道格拉斯",
"杜克",
"迪伦",
"埃迪",
"埃德加",
"爱迪生",
"艾德蒙",
"爱德华",
"艾德文",
"以利亚",
"艾略特",
"埃尔维斯",
"埃里克",
"伊桑",
"柳真",
"埃文",
"企业英语培训",
上一篇:
词根学习:Vinc 和 Vict
下一篇:
检查英文名称的正则表达式