1. 首页  / 起名 / 英文起名

将中文姓名转为拼音英文名的一种实现 塔罗测你近期将实现的愿望

每个人都希望过上幸福的生活,自己都会悄悄在心中制定一个愿望清单。许多人在生日那天都会对着蜡烛许下心愿,期待自己可以将梦想化为现实。有了期盼,也就有了生活的动力与追求。

每个人都希望过上幸福的生活,自己都会悄悄在心中制定一个愿望清单。许多人在生日那天都会对着蜡烛许下心愿,期待自己可以将梦想化为现实。有了期盼,也就有了生活的动力与追求。最近你会美梦成真吗,被幸运之神眷顾的你会实现什么愿望?请在以下塔罗牌中选择最有感觉的一张。

占卜规则:内心保持平静,选择一张你印象最深的牌。

牌面解析

A星星

睡眠对于每个人的身体健康都起着重要的作用,睡眠质量不佳则会对人们的日常生活工作产生不良影响。如果亲有着失眠多梦易惊醒的困扰,近期你将有机会睡个安稳觉。伴随着深度睡眠,你会以更加饱满热情的状态迎来崭新的一天。良好的睡眠将成为你拥有健康的源泉,也会为你的气色容颜助一臂之力。

B力量

如果亲一直希望在职场有所作为获得领导的认可,近期将有机会施展自己的才华。你很有可能因为自己的出色业绩而受到称赞和嘉奖,晋升的可能性很大。愿望的实现来源于你的不懈努力,你从来都不惧怕改变与挑战,你的勇敢与进取心也为你的成功赢得了更多幸运。

C皇后

新婚夫妇都渴望让自己的家庭更加完整,期盼迎接新成员的到来。如果亲在婚后一直希望可以早日拥有自己的宝宝,最近很有可能你会好孕来临。处在恋爱阶段的亲们,也许会在近期好事将近领证结婚。单身的亲如果还在为择偶发愁,近期你也有机会通过亲友介绍遇到让自己心动的意中人。

D战车

幸福和成功都需要靠自己的争取,往往在我们一心为目标努力拼搏时半路出现来势汹汹的竞争者。无论是生活工作还是感情中,如果你遇到了类似的困扰,近期你胜出的几率非常大。你处事不惊,竞争反而会让你坚定拼下去的信念。然而你面对的竞争者则心态不佳,自信不足,能力也不及你,最后对方输的心服口服。

未经允许不得转载

http://www.qiming3.com文章,转载请联系网管!

需要将中文名转为英文名,这里需要考虑到姓氏以及名字多音字选择,这里记录一下我实现的一种思路。

以下代码均使用JS来进行说明。

处理流程

首先需要判断名字长度以及名字规范

//中文名格式验证verifyName: function(str) {let re = /[^u4e00-u9fa5]/;const isChinese = str => !re.test(str);if (!isChinese(str) || str.length < 2) {return false;}return true;},

当名字长度超过两个子的时候需要判断复姓的情况,如名字为欧阳日天,那么需要询问用户姓氏为欧阳还是欧中文名字转换日文名字,这里只能通过提前预备所有的复姓列表进行检测。

这里提供一份我自己整理的复姓列表,下面的doubleFamilyName就是复姓列表数组

我声明一个this.isDoubleFamilyName用来标记是否为复姓的标记中文名字转换日文名字,默认为0,如果是复姓则2,单姓为1,这里是处理逻辑

if (str.length > 2 && doubleFamilyName.indexOf(str.substr(0, 2)) > -1) {//这里可以通过一个弹窗来提示用户选择//然后根据用户选择来设置this.isDoubleFamilyName的值} else {this.isDoubleFamilyName = 1;}

接下来需要判断名字中的多音字,注意这里的多音字是指拼写不同,音调不同的忽略。这里需要借助第三方的库来将汉字转为拼音,我使用的是在github上找的一个库,仓库地址在这里,使用方法很简单

import pinyin from 'pinyin';//获取这个字符串的全部读音//得到一个二维数组//数据格式如[ [ 'zhang', 'zhong' ], [ 'xin' ] ,['liu','ni']]this.py = pinyin(str, {heteronym: true,//打开多音字style: pinyin.STYLE_NORMAL//注音不加声调});let py = this.py; //这里存全局变量是为了后面可以复用

这里声明一个this.nameSpell用来保存最后的每个字的读音数组

考虑到实际使用中文名转英文名都是转为全大写,这里我也使用了toUpperCase()方法来转换,如不需要自己手动去除这个方法即可

if (py.some(i => i.length > 1)) {//判断这个二维数组中是否有哪一项含有多音字//这里让用户选择具体的读音并赋值给this.nameSpell//这里涉及到一个排列组合的问题,具体代码可以参考博客底部的*****} else {this.nameSpell = py.map(i => i[0].toUpperCase());}

现在我们已经将最后的整个拼音方案获取到this.nameSpell,接下来就是处理姓和名的分割了。这里使用this.firstName和this.lastName分别保存。

if (this.nameSpell.length > 0) {if (this.isDoubleFamilyName == 2) {this.lastName = this.nameSpell[0] + this.nameSpell[1];this.firstName = this.nameSpell.slice(2).join('');} else if (this.isDoubleFamilyName == 1) {this.lastName = this.nameSpell[0];this.firstName = this.nameSpell.slice(1).join('');}}

到此我们已经完成整个从中文名转为英文名的过程。

*****

二维数组的排列组合

/** * 传入一个二维数组,如[ [ 'zhang', 'zhong' ], [ 'xin' ] ,['liu']]* 返回[['zhang','xin','liu'],['zhong','xin','liu']]*/function(py) {let lengthArr = [];let productArr = [];let result = [];let length = 1;for (let i = 0; i < py.length; i++) {let len = py[i].length;lengthArr.push(len);let product = i === 0 ? 1 : py[i - 1].length * productArr[i - 1];productArr.push(product);length *= len;}for (let i = 0; i < length; i++) {let resultItem = [];for (let j = 0; j < py.length; j++) {resultItem.push(py[j][Math.floor(i / productArr[j]) % lengthArr[j]].toUpperCase());}result.push(resultItem);}return result;}

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.qiming3.com/yingwenqiming/31341.html