2015-02-13 3 views
4

Я знаю, что есть способ получить название страны из кода страны, но возможно ли это и наоборот? Я до сих пор не нашел никакой функции, которая преобразует строку «Нидерланды» в «NL». Если возможно, как я могу получить коды стран?получить код страны от имени страны в android

+0

Класс Locale может вам помочь. – njzk2

+0

Я просмотрел его, но не нашел метода, который должен был сделать трюк. – Tristus

+0

вы можете перечислить доступные локали и сравнить название страны. – njzk2

ответ

0

Locale

Locale locale = new Locale("de"); 
locale.getCountry(); 
+0

Это неправильный путь, я получил, например, «германию», но нужно «de» – Tristus

0

Не очень эффективно, но вы можете попробовать это:

for (Locale locale : Locale.getAvailableLocales()) { 
    if (locale.getDisplayCountry(Locale.US).equals("Netherlands")) { 
     // Found ! 
    } 
} 

Теперь, есть несколько предостережений:

  • ваша входная строка пишется на английском языке (если нет, знаете ли вы язык?)?
  • - страна, в которой вы ищете часть поддерживаемой локали (если это не будет работать)?
5
public String getCountryCode(String countryName) { 

    // Get all country codes in a string array. 
    String[] isoCountryCodes = Locale.getISOCountries(); 
    Map<String, String> countryMap = new HashMap<>(); 

    // Iterate through all country codes: 
    for (String code : isoCountryCodes) { 
     // Create a locale using each country code 
     Locale locale = new Locale("", code); 
     // Get country name for each code. 
     String name = locale.getDisplayCountry(); 
     // Map all country names and codes in key - value pairs. 
     countryMap.put(name, code); 
    } 
    // Get the country code for the given country name using the map. 
    // Here you will need some validation or better yet 
    // a list of countries to give to user to choose from. 
    String countryCode = countryMap.get(countryName); // "NL" for Netherlands. 

    return countryCode; 

} 
+0

@Vllad ... Нет необходимости создавать новую карту каждый раз в цикле. Он всегда будет иметь размер 1 и сохранить последнюю запись. Вам нужно создать hashmap вне цикла. Я обновил ваш ответ –

+0

Создавать 'HashMap' каждый раз, когда вы вызываете метод, очень плохая практика. – Dumbo

0

Я попробовал этот код, и это работает для меня.

public String GetCountryZipCode() { 
    String CountryID = ""; 
    String CountryZipCode = ""; 

    TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
    //getNetworkCountryIso 
    CountryID = manager.getSimCountryIso().toUpperCase(); 
    Log.v(Constant.TAG, "CountryID" + CountryID); 
    String[] rl = this.getResources().getStringArray(R.array.CountryCodes); 
    for (int i = 0; i < rl.length; i++) { 
     String[] g = rl[i].split(","); 
     if (g[1].trim().equals(CountryID.trim())) { 
      CountryZipCode = g[0]; 
      break; 
     } 
    } 
    return CountryZipCode; 
} 

и CountryCodes Вы должны поместить следующую строку в строке XML

<string-array name="CountryCodes" > 
    <item>93,AF</item> 
    <item>355,AL</item> 
    <item>213,DZ</item> 
    <item>376,AD</item> 
    <item>244,AO</item> 
    <item>672,AQ</item> 
    <item>54,AR</item> 
    <item>374,AM</item> 
    <item>297,AW</item> 
    <item>61,AU</item> 
    <item>43,AT</item> 
    <item>994,AZ</item> 
    <item>973,BH</item> 
    <item>880,BD</item> 
    <item>375,BY</item> 
    <item>32,BE</item> 
    <item>501,BZ</item> 
    <item>229,BJ</item> 
    <item>975,BT</item> 
    <item>591,BO</item> 
    <item>387,BA</item> 
    <item>267,BW</item> 
    <item>55,BR</item> 
    <item>673,BN</item> 
    <item>359,BG</item> 
    <item>226,BF</item> 
    <item>95,MM</item> 
    <item>257,BI</item> 
    <item>855,KH</item> 
    <item>237,CM</item> 
    <item>1,CA</item> 
    <item>238,CV</item> 
    <item>236,CF</item> 
    <item>235,TD</item> 
    <item>56,CL</item> 
    <item>86,CN</item> 
    <item>61,CX</item> 
    <item>61,CC</item> 
    <item>57,CO</item> 
    <item>269,KM</item> 
    <item>242,CG</item> 
    <item>243,CD</item> 
    <item>682,CK</item> 
    <item>506,CR</item> 
    <item>385,HR</item> 
    <item>53,CU</item> 
    <item>357,CY</item> 
    <item>420,CZ</item> 
    <item>45,DK</item> 
    <item>253,DJ</item> 
    <item>670,TL</item> 
    <item>593,EC</item> 
    <item>20,EG</item> 
    <item>503,SV</item> 
    <item>240,GQ</item> 
    <item>291,ER</item> 
    <item>372,EE</item> 
    <item>251,ET</item> 
    <item>500,FK</item> 
    <item>298,FO</item> 
    <item>679,FJ</item> 
    <item>358,FI</item> 
    <item>33,FR</item> 
    <item>689,PF</item> 
    <item>241,GA</item> 
    <item>220,GM</item> 
    <item>995,GE</item> 
    <item>49,DE</item> 
    <item>233,GH</item> 
    <item>350,GI</item> 
    <item>30,GR</item> 
    <item>299,GL</item> 
    <item>502,GT</item> 
    <item>224,GN</item> 
    <item>245,GW</item> 
    <item>592,GY</item> 
    <item>509,HT</item> 
    <item>504,HN</item> 
    <item>852,HK</item> 
    <item>36,HU</item> 
    <item>91,IN</item> 
    <item>62,ID</item> 
    <item>98,IR</item> 
    <item>964,IQ</item> 
    <item>353,IE</item> 
    <item>44,IM</item> 
    <item>972,IL</item> 
    <item>39,IT</item> 
    <item>225,CI</item> 
    <item>81,JP</item> 
    <item>962,JO</item> 
    <item>7,KZ</item> 
    <item>254,KE</item> 
    <item>686,KI</item> 
    <item>965,KW</item> 
    <item>996,KG</item> 
    <item>856,LA</item> 
    <item>371,LV</item> 
    <item>961,LB</item> 
    <item>266,LS</item> 
    <item>231,LR</item> 
    <item>218,LY</item> 
    <item>423,LI</item> 
    <item>370,LT</item> 
    <item>352,LU</item> 
    <item>853,MO</item> 
    <item>389,MK</item> 
    <item>261,MG</item> 
    <item>265,MW</item> 
    <item>60,MY</item> 
    <item>960,MV</item> 
    <item>223,ML</item> 
    <item>356,MT</item> 
    <item>692,MH</item> 
    <item>222,MR</item> 
    <item>230,MU</item> 
    <item>262,YT</item> 
    <item>52,MX</item> 
    <item>691,FM</item> 
    <item>373,MD</item> 
    <item>377,MC</item> 
    <item>976,MN</item> 
    <item>382,ME</item> 
    <item>212,MA</item> 
    <item>258,MZ</item> 
    <item>264,NA</item> 
    <item>674,NR</item> 
    <item>977,NP</item> 
    <item>31,NL</item> 
    <item>599,AN</item> 
    <item>687,NC</item> 
    <item>64,NZ</item> 
    <item>505,NI</item> 
    <item>227,NE</item> 
    <item>234,NG</item> 
    <item>683,NU</item> 
    <item>850,KP</item> 
    <item>47,NO</item> 
    <item>968,OM</item> 
    <item>92,PK</item> 
    <item>680,PW</item> 
    <item>507,PA</item> 
    <item>675,PG</item> 
    <item>595,PY</item> 
    <item>51,PE</item> 
    <item>63,PH</item> 
    <item>870,PN</item> 
    <item>48,PL</item> 
    <item>351,PT</item> 
    <item>1,PR</item> 
    <item>974,QA</item> 
    <item>40,RO</item> 
    <item>7,RU</item> 
    <item>250,RW</item> 
    <item>590,BL</item> 
    <item>685,WS</item> 
    <item>378,SM</item> 
    <item>239,ST</item> 
    <item>966,SA</item> 
    <item>221,SN</item> 
    <item>381,RS</item> 
    <item>248,SC</item> 
    <item>232,SL</item> 
    <item>65,SG</item> 
    <item>421,SK</item> 
    <item>386,SI</item> 
    <item>677,SB</item> 
    <item>252,SO</item> 
    <item>27,ZA</item> 
    <item>82,KR</item> 
    <item>34,ES</item> 
    <item>94,LK</item> 
    <item>290,SH</item> 
    <item>508,PM</item> 
    <item>249,SD</item> 
    <item>597,SR</item> 
    <item>268,SZ</item> 
    <item>46,SE</item> 
    <item>41,CH</item> 
    <item>963,SY</item> 
    <item>886,TW</item> 
    <item>992,TJ</item> 
    <item>255,TZ</item> 
    <item>66,TH</item> 
    <item>228,TG</item> 
    <item>690,TK</item> 
    <item>676,TO</item> 
    <item>216,TN</item> 
    <item>90,TR</item> 
    <item>993,TM</item> 
    <item>688,TV</item> 
    <item>971,AE</item> 
    <item>256,UG</item> 
    <item>44,GB</item> 
    <item>380,UA</item> 
    <item>598,UY</item> 
    <item>1,US</item> 
    <item>998,UZ</item> 
    <item>678,VU</item> 
    <item>39,VA</item> 
    <item>58,VE</item> 
    <item>84,VN</item> 
    <item>681,WF</item> 
    <item>967,YE</item> 
    <item>260,ZM</item> 
    <item>263,ZW</item> 
</string-array> 
0

создать JSONObject с названием страны и значения с кодами стран. , например.

JSONObject json=new JSONObject(); json.putString('COuntry Name','Country COde');

и сохранить это в prefrences

и получить то же использование json.getString('Country Name')

0

я улучшил Влад ответ. Поскольку инициализировать HashMap каждый раз, когда вы обращаетесь к методу, это очень плохая практика. Если вы не инициализируете карту один раз. Отредактированный ответ:

public String getCountryCode(String countryName) { 
    String[] isoCountryCodes = Locale.getISOCountries(); 
    for (String code : isoCountryCodes) { 
     Locale locale = new Locale("", code); 
     if (countryName.equalsIgnoreCase(locale.getDisplayCountry())) { 
      return code; 
     } 
    } 
    return ""; 
} 
Смежные вопросы