2015-05-27 26 views

cevap

19

Emoji bir Unicode sembolleridir. Unicode karakter tablosuna göre Emoji bayrakları, ISO 3166-1 alpha-2 iki harfli ülke kodlarını (wiki) kodlamak için kullanılması amaçlanan 26 alfabetik Unicode karakterinden (A-Z) oluşur. 0x41 büyük A harfini temsil

private String localeToEmoji(Locale locale) { 
    String countryCode = locale.getCountry(); 
    int firstLetter = Character.codePointAt(countryCode, 0) - 0x41 + 0x1F1E6; 
    int secondLetter = Character.codePointAt(countryCode, 1) - 0x41 + 0x1F1E6; 
    return new String(Character.toChars(firstLetter)) + new String(Character.toChars(secondLetter)); 
} 

ve 0x1F1E6 Unicode tablosunda REGIONAL INDICATOR SYMBOL LETTER A şudur: iki harfli ülke kodu bölmek ve bölgesel gösterge sembolü harfine her A-Z harfi dönüştürmek mümkündür demektir

.

Not: Bu kod basitleştirilmiş bir örnektir ve yerel ayar içeride mevcut değil olabilir ülke koduna ilişkin gerekli kontrolleri sahip değildir.

+1

inanılmaz basit bir çözüm adam –

+0

tüm coutnries bayrağı alabilir miyim? –

+0

java.util.Locale.getISOCountries() yöntemi, ISO 3166'da tanımlanan tüm 2 harfli ülke kodlarının bir listesini döndürür. Bu dizeleri emojiyi oluşturmak için kullanabilirsiniz. – Dmitry

0

Ben ilk ben sadece aracılığıyla Android'de çalışan Yerli tepki ettik ben bir şekilde gözden kaçan bu cevabı yazdım!

Neyse, işte veya ES6 desteği olmadan çalışır benim JavaScript çözüm.

yerine büyük harflerle olarak ülke kodları geçmek istiyorsanız

function countryCodeToFlagEmoji(country) { 
 
     return typeof String.fromCodePoint === "function" 
 
     ? String.fromCodePoint(...[...country].map(c => c.charCodeAt() + 0x1f185)) 
 
     : [...country] 
 
      .map(c => "\ud83c" + String.fromCharCode(0xdd85 + c.charCodeAt())) 
 
      .join(""); 
 
    } 
 

 
console.log(countryCodeToFlagEmoji("au")); 
 
console.log(countryCodeToFlagEmoji("aubdusca"));

, sadece 0x1f1a5 ve 0xdda5 iki uzaklıklar değiştirin.