利用可能なすべての国コードを持つオブジェクトがあります。特定の電話番号で国コードを取得し、対応する国名を表示する方法を知りたいです。電話番号は 16041234567 (カナダ/米国 +1) または 8601012345678 (中国 +86) またはその他の国の電話番号 (先頭にプラス (+) がない) のようになります。国コードを取得したいだけで、名前を表示する方法を知っています。コードは1桁から4桁までのようです。
質問する
4821 次
1 に答える
3
最初の答え:
ちょっと考えただけで、反対側から数えてみませんか。
数字の裏側から 10 の数字を取り除きます。残っているのは、切り捨てられた国コードです。あなたの例から:
num = "16041234567";
code = num.slice(0, num.length-10);
country_name = country_code_object[code];
このコードは、オブジェクトが可変長コードを処理できることを前提としています (ただし、必要に応じてコードの先頭をいつでもバッファできます。
BROKEN: 中国は 10 の数字を使用しない (セルは 11 を使用)
修正: 国コードをより完全に調べた後、それらがプレフィックス ツリーであることがわかりました。これは、ライナー タイムの場合、1 文字ずつチェックできることを意味します。
num = "16041234567";
country_code;
i = 1;
while (!country_code || i < num.length) {
country_code = country_code_obj[num.slice(0, i)];
i++;
}
国コードの性質上、最初に機能するコードが正しいコードであることが保証されます。(そして、これは本当であるに違いないと想像できます.電話会社は、あなたがいつ番号を入力し終わったかを知りません.彼らは、あなたが有効な国番号の最後に達したことを知っているだけです.)
于 2013-10-31T22:57:06.633 に答える