斯堪的纳维亚姓名转英文字母用于邮箱的标准化规则参考及实现咨询
斯堪的纳维亚姓名转英文字母用于邮箱的标准化规则参考及实现咨询
我们需要开发一个邮箱地址生成器,功能是根据输入的名字和姓氏,生成基于英文基础拉丁字母的标准化格式。
目前我们的方案对普通拉丁系姓名都能正常工作,但在处理斯堪的纳维亚语姓名里的特殊字符时遇到了瓶颈,具体是这几个字符:å、ø、æ。
目前我们暂定的转换规则是:
- å → a
- ø → o(部分资料建议转写为oe)
- æ → ae
我们试图查找是否有通用的规范,能把扩展拉丁字母转写(甚至不确定这个术语是否准确?)为英文使用的基础拉丁字母,但一直没找到合适的依据。有没有人能给我们推荐一个靠谱的参考资料?
以下是我们目前用于文本“扁平化/标准化”的代码:
function flattenText (text) { const extendedChar = ['ß', 'Œ', 'œ']; const englishChar = ['ss', 'oe', 'oe']; // Deal with accents text = text.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); // Deal with other letter types let newText = ''; for (let i = 0; i < text.length; i++) { const charIdx = extendedChar.indexOf(text.charAt(i)); if (charIdx > -1) { newText += englishChar[charIdx]; } else { newText += text.charAt(i); } } return newText; }
补充编辑:现在只剩Ø这个字符还有问题了,normalize()方法已经处理了其他特殊情况,但我们还是很希望能找到一份权威的参考资料。
备注:内容来源于stack exchange,提问作者Andre M
相关产品推荐
相关产品推荐

