在您的数据库中存储两个字段:
- 两位数国家代码(字符串)
- 电话号码的国家部分(字符串)
使用libphonenumber,您可以解析数字以生成您可能希望在数据库之外使用的不同格式。
例如:
| countryCode | nationalNumber
--------------------------------
| US | 800-flowers
可以按如下方式使用(假设这个Javascript lib):
// Google's libphonenumber library
import libphonenumber from 'google-libphonenumber';
// Grab the parts of the lib we'll need
const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();
const phoneFormat = libphonenumber.PhoneNumberFormat;
// Parse the number -- assume we already got this from the DB
let parsed;
try {
parsed = phoneUtil.parse(db.nationalNumber, db.countryCode);
} catch(e) {
throw new Error("Couldn't parse the phone number");
}
// Now print a few examples
console.log(phoneUtil.format(parsed, phoneFormat.NATIONAL));
console.log(phoneUtil.format(parsed, phoneFormat.INTERNATIONAL));
console.log(phoneUtil.format(parsed, phoneFormat.E164));
将输出:
(800) 356-9377
+1 800-356-9377
+18003569377
...这足以分别显示给本地用户、国际拨号和编程使用(例如 SMS 消息传递)。