我有一些国家/地区,可以提供3个字母的国家代码(supports国家/地区代码)。
例如美国的“美国”
我有一种方法可以从2个字母(即“美国”而不是“美国”)中给我标记表情符号/字符串。
以下方法适用于2个字母的国家/地区代码,但不适用于3个字母。
func flag(countryCode: String) -> String? {
var string = ""
let country = countryCode.uppercased()
let regionalA = "".unicodeScalars
let letterA = "A".unicodeScalars
let base = regionalA[regionalA.startIndex].value - letterA[letterA.startIndex].value
for scalar in country.unicodeScalars {
guard let regionalScalar = UnicodeScalar(base + scalar.value) else { return nil }
string.unicodeScalars.append(regionalScalar)
}
return string.isEmpty ? nil : string
}
如何从3个字母的国家/地区代码中获得国旗?
答案 0 :(得分:0)
编写一个翻译集合,其中包含所有CountryCode翻译。在此对象中,我将放置2个字段或属性。一个将是TripleCountryCode属性/字段,另一个将是一个dualCountryCode属性/字段...
超频您将必须输入每个必须手动翻译的代码,如下所示: (我使用Typescript,因为它是我的主要编码语言,并且看起来与您的代码相似,所以也许您可以使用它...)
打字稿代码
@import "~@angular/material/prebuilt-themes/indigo-pink.css";
然后,您可以像这样简单地调用翻译:
// We take an interface as the object declaration
export interface TranslatedCountryCode {
tripleCode: string;
dualCode: string;
}
// We set up a class to handle the translations
export class TranslationClass {
static translations: TranslatedCountryCode[] = [
{ tripleCode: "USA", dualCode: "US" },
{ tripleCode: "GER", dualCode: "DE" },
{ tripleCode: "GBR", dualCode: "GB" } // And so on....
];
static GetDualTranslation(tripleCode: string): string | null {
for (var key in this.translations)
// If we find something we return it....
if (tripleCode === this.translations[key].tripleCode)
return this.translations[key].dualCode;
// If we don't find any translation we return null....
return null;
}
static GetTripleTranslation(dualCode: string): string | null {
for (var key in this.translations)
// If we find something we return it....
if (dualCode === this.translations[key].dualCode)
return this.translations[key].tripleCode;
// If we don't find any translation we return null....
return null;
}
}
如果该帖子对您有所帮助,请给我竖起大拇指,我将非常感谢。
亲切问候
编辑:我注意到您可以o.c.也要带字典,但是您必须将每次翻译都双重输入到三码字典和双码字典中……我用for循环解决了这个问题,以避免重复分配。