का कोई ओपन सोर्स जावा एनम है क्या कोई भी स्वतंत्र रूप से उपलब्ध जावा 1.5 पैकेज के बारे में जानता है जो आईएसओ 3166-1 देश कोड को एनम या एनमैप के रूप में सूचीबद्ध करता है? विशेष रूप से मुझे "आईएसओ 3166-1-अल्फा -2 कोड तत्व" की आवश्यकता होती है, यानी 2 अक्षर देश कोड जैसे "हमें", "यूके", "डी" इत्यादि। एक बनाना बहुत आसान है (हालांकि थकाऊ), लेकिन अगर Apache भूमि में पहले से ही एक मानक एक बाहर है या जैसे यह थोड़ा सा बचाएगा।क्या आईएसओ 3166-1 देश कोड
उत्तर
इस कोड को सन जावा 6 में 242 देशों हो जाता है:
String[] countryCodes = Locale.getISOCountries();
the ISO website हालांकि दावा है, 249 ISO 3166-1-अल्फा -2 कोड तत्वों देखते हैं, हालांकि एक ही जानकारी को javadoc लिंक।
भाषा नाम के साथ इस enum को उत्पन्न करने का एक आसान तरीका है। इस कोड को निष्पादित चिपकाने के लिए enum फ़ील्ड की सूची उत्पन्न करने के लिए:
/**
* This is the code used to generate the enum content
*/
public static void main(String[] args) {
String[] codes = java.util.Locale.getISOLanguages();
for (String isoCode: codes) {
Locale locale = new Locale(isoCode);
System.out.println(isoCode.toUpperCase() + "(\"" + locale.getDisplayLanguage(locale) + "\"),");
}
}
यह आपको भाषाओं की सूची देता है, न कि देश। – user27478
यहाँ कैसे मैं के साथ देश कोड + देश का नाम एक enum उत्पन्न है:
package countryenum;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
public class CountryEnumGenerator {
public static void main(String[] args) {
String[] countryCodes = Locale.getISOCountries();
List<Country> list = new ArrayList<Country>(countryCodes.length);
for (String cc : countryCodes) {
list.add(new Country(cc.toUpperCase(), new Locale("", cc).getDisplayCountry()));
}
Collections.sort(list);
for (Country c : list) {
System.out.println("/**" + c.getName() + "*/");
System.out.println(c.getCode() + "(\"" + c.getName() + "\"),");
}
}
}
class Country implements Comparable<Country> {
private String code;
private String name;
public Country(String code, String name) {
super();
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(Country o) {
return this.name.compareTo(o.name);
}
}
ने इंटेलिटक्स्ट – NimChimpsky
को सक्षम करने के लिए प्रिंट में एक पंक्ति जोड़ा जो कि एक enum नहीं है। – David
@ डेविड यह एक enum – Bozho
यह अभी भी सवाल का जवाब नहीं है। मैं इसके लिए एक प्रकार का गणक भी ढूंढ रहा था, और कुछ भी नहीं मिला। यहां हैशटेबल का उपयोग करने वाले कुछ उदाहरण, लेकिन अंतर्निहित के रूप में इसका प्रतिनिधित्व करते हैं
मैं एक अलग दृष्टिकोण के लिए जाऊंगा। इसलिए मैं अजगर में कोई स्क्रिप्ट बनाने के लिए स्वचालित रूप से जावा में सूची उत्पन्न करने के:
#!/usr/bin/python
f = open("data.txt", 'r')
data = []
cc = {}
for l in f:
t = l.split('\t')
cc = { 'code': str(t[0]).strip(),
'name': str(t[1]).strip()
}
data.append(cc)
f.close()
for c in data:
print """
/**
* Defines the <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO_3166-1_alpha-2</a>
* for <b><i>%(name)s</i></b>.
* <p>
* This constant holds the value of <b>{@value}</b>.
*
* @since 1.0
*
*/
public static final String %(code)s = \"%(code)s\";""" % c
जहां data.txt फ़ाइल विकिपीडिया मेज से एक साधारण कॉपी & पेस्ट (बस सभी अतिरिक्त लाइनें हटाने है, सुनिश्चित करें कि आप एक देश है प्रति पंक्ति कोड और देश का नाम)।
तो बस अपने स्थिर कक्षा में रखें:
/**
* Holds <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO_3166-1_alpha-2</a>
* constant values for all countries.
*
* @since 1.0
*
* </p>
*/
public class CountryCode {
/**
* Constructor defined as <code>private</code> purposefully to ensure this
* class is only used to access its static properties and/or methods.
*/
private CountryCode() { }
/**
* Defines the <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO_3166-1_alpha-2</a>
* for <b><i>Andorra</i></b>.
* <p>
* This constant holds the value of <b>{@value}</b>.
*
* @since 1.0
*
*/
public static final String AD = "AD";
//
// and the list goes on! ...
//
}
अब जावा enum के रूप में देश कोड (ISO 3166-1alpha-2/alpha-3/numeric) सूची के एक कार्यान्वयन अपाचे लाइसेंस संस्करण 2.0 के तहत GitHub पर उपलब्ध है।
उदाहरण:
CountryCode cc = CountryCode.getByCode("JP");
System.out.println("Country name = " + cc.getName()); // "Japan"
System.out.println("ISO 3166-1 alpha-2 code = " + cc.getAlpha2()); // "JP"
System.out.println("ISO 3166-1 alpha-3 code = " + cc.getAlpha3()); // "JPN"
System.out.println("ISO 3166-1 numeric code = " + cc.getNumeric()); // 392
अंतिम संपादन 2016 जून-09
CountryCode enum अन्य जावा enums के साथ com.neovisionaries.i18n में पैक किया गया था, LanguageCode (ISO 639-1) , LanguageAlpha3Code (ISO 639-2), लोकेलकोड, स्क्रिप्टकोड (ISO 15924) और मुद्राकोड (ISO 4217) और पंजीकृत मेवेन सेंट्रल रिपोजिटरी में।
Maven
<dependency>
<groupId>com.neovisionaries</groupId>
<artifactId>nv-i18n</artifactId>
<version>1.22</version>
</dependency>
Gradle
dependencies {
compile 'com.neovisionaries:nv-i18n:1.22'
}
GitHub
https://github.com/TakahikoKawasaki/nv-i18n
जावाडोक
http://takahikokawasaki.github.com/nv-i18n/
OSGi
Bundle-SymbolicName: com.neovisionaries.i18n
Export-Package: com.neovisionaries.i18n;version="1.22.0"
हाय Takahiko इसके लिए धन्यवाद! मैंने अभी तीन लापता देशों को जोड़ा है, खेद है कि मैं जल्दी में था और मैंने सिर्फ रेपो को फोर्क किया था, आपको यहां अपडेट मिलेगा: https://github.com/bbossola/CountryCode –
हाय ब्रूनो! लापता प्रविष्टियों (एएल, एएन और जीएन) खोजने के लिए धन्यवाद। मैंने आपके फोर्कड रिपॉजिटरी को संदर्भित किया और मैन्युअल रूप से उन्हें मेरे भंडार में कॉपी किया। धन्यवाद! इस पुस्तकालय के लिए –
धन्यवाद _so much_। –
मैं जब तक मैं अभी हाल ही में वास्तव में इस उद्देश्य के लिए मुक्त-स्रोत मेरी जावा enum था इस सवाल के बारे में पता नहीं था! अद्भुत संयोग!
मैंने बीएसडी कैल्यूज 3 लाइसेंस के साथ अपने ब्लॉग पर पूरा स्रोत कोड डाल दिया है, इसलिए मुझे नहीं लगता कि किसी के बारे में कोई भी गोमांस होगा।
यहां पाया जा सकता है। https://subversivebytes.wordpress.com/2013/10/07/java-iso-3166-java-enum/
आशा है कि यह उपयोगी है और विकास के दर्द को आसान बनाता है।
आपकी सूची में इज़राइल गायब है ... – Alicia
आप पहले से ही जावा स्थान पर भरोसा करने की, तो मैं देशों आदि के लिए एक सरल HashMap उपयोग करने का सुझाव बजाय बनाने नए वर्गों जा रहे हैं
यहाँ कैसे मैं इसे का प्रयोग करेंगे अगर मैं जावा स्थानीयकरण पर भरोसा करने के लिए गए थे है केवल:
private HashMap<String, String> countries = new HashMap<String, String>();
String[] countryCodes = Locale.getISOCountries();
for (String cc : countryCodes) {
// country name , country code map
countries.put(new Locale("", cc).getDisplayCountry(), cc.toUpperCase());
}
के बाद आप नक्शे को भरने, आप जब भी इसकी आवश्यकता है देश के नाम से आईएसओ कोड प्राप्त कर सकते हैं। या आप इसे देश के नाम मानचित्र पर भी एक आईएसओ कोड बना सकते हैं, तदनुसार 'put' विधि को संशोधित करें।
नहीं एक जावा enum, लेकिन किसी को पहले से ही SDK यह com.amazonaws.services.route53domains.model.CountryCode
शामिल अमेज़न एडब्ल्यूएस उपयोग कर रहा है इस बात का एक JSON संस्करण http://country.io/names.json
पर उपलब्ध है। मुझे पता है कि यह आदर्श नहीं है लेकिन यह एक विकल्प है यदि आप पहले से ही एडब्ल्यूएस एसडीके का उपयोग करते हैं। ज्यादातर मामलों के लिए मैं Takahiko के nv-i18n
का उपयोग करता हूं, जैसा कि उन्होंने उल्लेख किया है, यह आईएसओ 3166-1 लागू करता है।
मैंने एक enum बनाया है, जिसे आप अंग्रेजी देश के नाम से संबोधित करते हैं। country-util देखें।
प्रत्येक एनम पर आप जावा लोकेल प्राप्त करने के लिए getLocale()
पर कॉल कर सकते हैं।
लोकेल से आप सभी जानकारी प्राप्त कर सकते हैं जिनका उपयोग आप किया जाता है, आईएसओ -3166-1 दो अक्षर देश कोड fx।
public enum Country{
ANDORRA(new Locale("AD")),
AFGHANISTAN(new Locale("AF")),
ANTIGUA_AND_BARBUDA(new Locale("AG")),
ANGUILLA(new Locale("AI")),
//etc
ZAMBIA(new Locale("ZM")),
ZIMBABWE(new Locale("ZW"));
private Locale locale;
private Country(Locale locale){
this.locale = locale;
}
public Locale getLocale(){
return locale;
}
प्रो:
- प्रकाश वजन
- जावा स्थलों के लिए नक्शे
- एड्रेसेबल पूरा देश नाम से
- Enum मान hardcoded नहीं हैं, लेकिन Locale.getISOCountries के लिए एक कॉल द्वारा उत्पन्न()। यही है: enum में परिलक्षित देशों की सूची में किए गए किसी भी बदलाव के लिए नवीनतम जावा संस्करण के खिलाफ परियोजना को बस पुन: संकलित करें।
कोन:
- नहीं Maven भंडार में
- सबसे अधिक संभावना सरल/अन्य समाधान है, जो मैं नहीं जानता कि कम से कम अर्थपूर्ण।
- अपनी खुद की जरूरतों के लिए बनाया गया/जैसा कि बनाए रखा गया है। - आपको शायद रेपो क्लोन करना चाहिए।
- 1. एंड्रॉइड अनुप्रयोगों में आईएसओ देश कोड कैसे प्राप्त करें?
- 2. क्या कोई अच्छा ध्वज आइकन पैक है जो आईएसओ -3166 देश कोड से मेल खाता है?
- 3. TimeZoneInfo और देश कोड
- 4. देश कोड सूची - C#
- 5. क्या समय क्षेत्र (केवल) देश कोड (वैध आईएसओ -3166 कोड) के साथ एक समय पाने का कोई तरीका है?
- 6. एंड्रॉइड में देश आईएसओ कोड का उपयोग कर समय प्रारूप कैसे प्राप्त करें?
- 7. देश का नाम देश कोड में संक्षिप्त करें php
- 8. जावा: आईएसओ 4217 मुद्रा कोड
- 9. यदि आपके पास आईएसओ देश कोड 'यूएस`,' एफआर` है, तो आप लोकेल कोड (`लोकेल.यूएस ',' लोकेल.फ्रेंस`) कैसे प्राप्त करते हैं?
- 10. आईएसओ
- 11. आईएसओ
- 12. आईएसओ
- 13. क्या सार्वजनिक रूप से सुलभ पार्सेबल देश/देश कोड सूची मौजूद है?
- 14. आईएसओ
- 15. आईएसओ
- 16. देश
- 17. आईएसओ
- 18. देश के मुद्रा कोड प्राप्त करना
- 19. आईएसओ
- 20. आईएसओ कोरएमआईडीआई
- 21. देश के नाम को बदलने के लिए कोई भी कक्षा 2 अक्षरों के कोड में?
- 22. आईएसओ ऐप
- 23. आईएसओ ऐप
- 24. एक्सएमएल प्रारूप में आईएसओ डेटा का स्रोत?
- 25. आईएसओ 5
- 26. मेरे पास देश कोड की एक सूची है और भाषा कोड की एक सूची है। मैं देश कोड से भाषा कोड में कैसे मानचित्र करूं?
- 27. आईएसओ 5
- 28. आईफोन पर मोबाइल देश और नेटवर्क कोड कैसे प्राप्त करें
- 29. आईएसओ सी ++ कोड के उदाहरण वैध सी ++/सीएलआई
- 30. आईएसओ 4.0 ऐप्स
ध्यान दें कि ग्रेट ब्रिटेन के लिए आईएसओ 3166-1-अल्फा -2 आपके प्रश्न में यूके नहीं है। –
@ केन हां आप कर सकते हैं लेकिन फिर आपको उस सूची को बनाए रखना होगा और इसे विकिपीडिया के साथ समन्वयित रखना होगा। समस्या बढ़ती है ... – jontejj