JapanesePhoneNumberFormatter.java revision 77359e7af334a9c976e8d597ede59c74cd45dac5
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.Editable; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Japanese Phone number formatting rule is a bit complicated. 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Here are some valid examples: 242563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville * 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 022-229-1234 0223-23-1234 022-301-9876 015-482-7849 0154-91-3478 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 01547-5-4534 090-1234-1234 080-0123-6789 2777359e7af334a9c976e8d597ede59c74cd45dac5Keiji Ariyama * 050-0000-0000 060-0000-0000 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 0800-000-9999 0570-000-000 0276-00-0000 292563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville * 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * As you can see, there is no straight-forward rule here. 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In order to handle this, a big array is prepared. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* package */ class JapanesePhoneNumberFormatter { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static short FORMAT_MAP[] = { 3577359e7af334a9c976e8d597ede59c74cd45dac5Keiji Ariyama -100, 10, 220, -15, 410, 530, 1200, 670, 780, 1060, 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -25, 20, 40, 70, 100, 150, 190, 200, 210, 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -36, -100, -100, -35, -35, -35, 30, -100, -100, -100, 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -45, -35, -35, 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -100, -35, -35, -35, -35, 50, -35, 60, 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -45, -35, -45, -35, -35, -45, -35, -35, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -45, -35, -35, -35, -35, -45, -45, -35, 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -35, -35, -35, 80, 90, -100, -100, -100, 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -45, -45, -35, -35, 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -45, -35, -35, -35, 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, 110, 120, 130, -35, 140, -25, 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -35, -35, -35, -35, -35, -45, -25, -35, 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -35, -35, -35, -35, -35, -25, -45, -35, 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -45, -35, -35, -35, -35, -35, 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -45, -45, -35, -35, 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -35, 160, 170, 180, -35, -35, -100, -100, 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -45, -35, -45, -45, -35, -35, -35, -35, 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -35, -45, -35, 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -45, -45, -45, -35, -45, -35, 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -35, -35, -25, -35, -35, 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -35, -35, -35, -25, -25, 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -25, -35, -35, -25, 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, 230, 250, 260, 270, 320, 340, 360, 390, 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, 240, -35, -35, -35, -25, -35, -35, 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -25, -25, -25, -25, -25, -25, 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -35, -35, -35, -25, -35, -35, -25, 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -25, -35, -35, -35, -25, 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -35, 280, 290, 300, 310, -35, 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -25, -25, -25, -35, -35, -25, 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -35, 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -25, -25, -25, -25, -25, 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -35, 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -25, -35, 330, -35, -35, -35, -35, -35, 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -25, -25, -25, -25, 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -35, -25, -35, -35, 350, -35, 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -25, -25, 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -35, 370, -35, -35, -25, -35, -35, 380, 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -25, -25, -35, -35, -35, -35, -35, 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -25, -25, -25, -35, -35, -35, -35, 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, 400, -35, -35, -35, -35, -25, -35, 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -25, -25, -25, -25, -25, 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -15, -15, 420, 460, -25, -25, 470, 480, 500, 510, 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -15, -25, 430, -25, -25, -25, -25, -25, 440, 450, 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -35, 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -25, -25, -25, -35, -35, -35, 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -15, -25, -15, -15, -15, -15, -15, -25, -25, -15, 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -25, -25, -35, -25, -35, -35, 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -35, -25, -35, -35, -35, -25, -25, 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 490, -15, -25, -25, -25, -35, -35, -25, -35, -35, 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -15, -35, -35, -35, -35, -35, -35, -35, -35, -15, 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -25, -25, -25, -25, -25, -25, 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -35, -35, -35, -25, -25, -25, 520, 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -45, -100, -45, -100, -45, -100, -45, -100, 8877359e7af334a9c976e8d597ede59c74cd45dac5Keiji Ariyama -26, -100, -25, 540, 580, 590, 600, 610, 630, 640, 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -25, -25, -35, -35, -35, 550, 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -25, -25, -25, -25, 560, 570, -25, -35, 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -25, -25, -25, -25, -25, -25, 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -35, -25, -25, -35, -25, -25, 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -35, -35, -25, -35, -35, -25, 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -25, -35, -35, -35, -35, -35, -35, -25, 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -35, -35, -35, -35, -35, -35, -35, -35, -35, 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -36, -100, -35, -35, -35, -35, 620, -35, -35, -100, 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -35, -35, -45, 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -25, -35, -35, -35, -35, -25, -25, 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -35, -35, -35, 650, -35, 660, 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -45, -35, -35, -35, -35, -45, 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -35, -35, -25, 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -26, -100, 680, 690, 700, -25, 720, 730, -25, 740, 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -25, -25, -35, -25, -25, -25, -25, 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -25, -35, -35, -35, -35, -35, 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -100, -35, -35, -35, -35, 710, -35, -35, -35, 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -35, -45, -35, 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -35, -25, -35, -35, -35, -35, -25, 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -25, -35, -25, -35, -35, 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -25, -25, 750, 760, 770, -35, -35, -35, 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -25, -25, -25, -35, -35, -35, -25, 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -25, -25, -35, -35, -25, 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -25, -25, -35, -35, 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 790, -100, 800, 850, 900, 920, 940, 1030, 1040, 1050, 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -36, -26, -26, -26, -26, -26, -26, -26, -26, -26, 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -35, 810, -25, -35, -35, -25, 820, 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -25, -25, -35, -35, -35, -35, -35, -25, 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, 830, -35, 840, -35, -25, -35, -35, -25, 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -25, -25, -25, -25, -25, -25, 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -25, -25, -25, -100, -100, -100, -100, -100, -100, 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -35, 860, -35, 870, 880, 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -35, 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -45, -45, -35, 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -100, -100, -100, -100, 890, -100, -100, -100, 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -45, -45, -25, -45, -45, -25, -45, -45, -45, 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -25, -35, -35, 910, -35, -25, 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -35, -45, -35, -35, 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, 930, -35, -35, -35, -35, -35, -35, -35, -35, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -45, -100, -45, -100, -100, -100, -100, -100, 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, 950, -25, 970, 990, -35, 1000, 1010, 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, 960, -35, -35, -35, 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -45, -45, -45, -45, -45, -45, -35, -45, -45, -45, 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -25, -35, -35, 980, -35, -35, -35, -35, 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -25, -25, -100, -100, -100, -100, -100, -100, 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -35, 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -35, -35, -25, 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -25, -25, -35, -35, -35, 1020, 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -45, -45, -35, -35, -45, -45, -45, -45, -45, -45, 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -25, -35, -25, -35, -25, -35, 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -35, -35, -35, -25, -35, -25, -35, 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -35, -35, -35, -35, -25, 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -26, -100, 1070, 1080, 1090, 1110, 1120, 1130, 1140, 1160, 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -25, -25, -25, -25, -25, -25, 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -25, -25, -25, -25, -25, -25, -25, -25, 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -100, -35, -35, -35, -100, -35, -35, -35, 1100, 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -35, -35, -35, -35, -45, -35, -35, -35, 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -25, -35, -25, -35, -35, -35, -35, -25, -35, 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -25, -25, -35, -35, -35, -35, -35, -35, 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -25, -35, -35, -35, -25, -25, -35, -35, -35, 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1150, -25, -35, -35, -35, -35, -35, -35, -25, -25, 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, -35, -45, -35, -35, -35, -35, -35, -35, -35, 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -35, 1170, -25, -35, 1180, -35, 1190, -35, -25, -25, 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -100, -100, -45, -45, -100, -100, -100, -100, -100, -100, 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project -25, -35, -35, -35, -35, -35, -35, -25, -25, -35, 15477359e7af334a9c976e8d597ede59c74cd45dac5Keiji Ariyama -35, -35, -35, -35, -35, -35, -35, -35, -35, -45, 15577359e7af334a9c976e8d597ede59c74cd45dac5Keiji Ariyama -26, -15, -15, -15, -15, -15, -15, -15, -15, -15}; 1562563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void format(Editable text) { 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Here, "root" means the position of "'": 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // 0'3, 0'90, and +81'-90 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // (dash will be deleted soon, so it is actually +81'90). 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int rootIndex = 1; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length = text.length(); 1632563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville if (length > 3 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && text.subSequence(0, 3).toString().equals("+81")) { 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rootIndex = 3; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (length < 1 || text.charAt(0) != '0') { 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence saved = text.subSequence(0, length); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Strip the dashes first, as we're going to add them back 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = 0; 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (i < text.length()) { 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (text.charAt(i) == '-') { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.delete(i, i + 1); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project i++; 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1812563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = text.length(); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int dashposition; 1842563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project i = rootIndex; 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int base = 0; 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (i < length) { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char ch = text.charAt(i); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!Character.isDigit(ch)) { 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.replace(0, length, saved); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project short value = FORMAT_MAP[base + ch - '0']; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (value < 0) { 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (value <= -100) { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.replace(0, length, saved); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int dashPos2 = rootIndex + (Math.abs(value) % 10); 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > dashPos2) { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.insert(dashPos2, "-"); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int dashPos1 = rootIndex + (Math.abs(value) / 10); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > dashPos1) { 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.insert(dashPos1, "-"); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project base = value; 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project i++; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2132563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > 3 && rootIndex == 3) { 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project text.insert(rootIndex, "-"); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}