এই উত্তরটি কিছুটা দেরিতে হতে পারে তবে এটি প্রমাণিত হয়েছে যে স্ট্রিংটি পার্সিং করা ওপি অনুমানের মতো কুৎসিত নয়। আমি এটি বেশ সহজ এবং সংক্ষিপ্ত:
public static Locale fromString(String locale) {
String parts[] = locale.split("_", -1);
if (parts.length == 1) return new Locale(parts[0]);
else if (parts.length == 2
|| (parts.length == 3 && parts[2].startsWith("#")))
return new Locale(parts[0], parts[1]);
else return new Locale(parts[0], parts[1], parts[2]);
}
আমি লোকাল.টোস্ট্রিং () ডকুমেন্টেশনে প্রদত্ত সমস্ত উদাহরণ দিয়ে এটি (জাভা 7 এ) পরীক্ষা করে দেখেছি: "en", "ডি_ডিই", "_জিবি", "এন_ ইউএস_উইন", "ডি__পোসিআইএক্স", "জেডএইচ_সিএন_ # হান্স", "zh_TW_ # হ্যান্ট-এক্স-জাভা ", এবং" তম_এইচটি_টি_এইচ # ইউ-নু-থাই "।
গুরুত্বপূর্ণ আপডেট : ডকুমেন্টেশন অনুযায়ী জাভা 7+ এ ব্যবহারের জন্য এটি প্রস্তাবিত নয় :
বিশেষত, ক্লায়েন্টরা যারা ভাষা, দেশ এবং বৈকল্পিক ক্ষেত্রগুলিতে টো স্ট্রিংয়ের আউটপুটকে বিশ্লেষণ করে তা চালিয়ে যেতে পারে (যদিও এটি দৃ strongly়ভাবে নিরুৎসাহিত করা হয়েছে ), যদিও স্ক্রিপ্ট বা এক্সটেনশন উপস্থিত থাকলে বৈকল্পিক ক্ষেত্রটিতে এতে অতিরিক্ত তথ্য থাকবে।
পরিবর্তে লোকাল.ফোর্ন ল্যাঙ্গুয়েজ ট্যাগ এবং লোকালে. টু ল্যাঙ্গুয়েজ ট্যাগ ব্যবহার করুন বা আপনার অবশ্যই প্রয়োজন হলে লোকাল.বিল্ডার।