我有由NSLocale localeIdentifier
產生的字符串值,我需要構造一個java.util.Locale
。我有用於解析Java語言環境的org.apache.commons.lang3.LocaleUtils#toLocale
,但這不適用於所有情況。例如,[email protected]=gregorian
和zh-Hans_TH
等值導致java.lang.IllegalArgumentException
。如何將iOS NSLocale localeIdentifier轉換爲Java語言環境?
2
A
回答
2
看起來像org.apache.commons.lang3.LocaleUtils#toLocale
不支持iOS語言環境的所有功能。蘋果有documentation describing the language and locale ID format。語言環境可以是下列格式之一:
[language designator]
[language designator]_[region designator]
[language designator]-[script designator]
[language designator]-[script designator]_[region designator]
哪裏[language designator]
爲ISO 639,[region designator]
是ISO 3166和[script designator]
是ISO 15924這個文檔沒有定義@
,但我認爲我們不需要它爲java.util.Locale
。
下面是用於匹配的iOS語言環境的java.util.regex.Pattern
:
public static final Pattern localePattern = Pattern.compile(
"^(?<lang>\\p{Lower}{2,3})" + // always match lang
"(-(?<script>\\p{Upper}\\p{Lower}{3}))?" + // optional script
"(_(?<region>(\\p{Upper}{2}|\\p{Digit}{3})))?" + // optional region
"(_(?<variant>\\p{Alnum}+))?" + // optional variant
"(@.+)?$" // optional @ stuff
);
下面是從iOS區域構建java.util.Locale
的方法。
public static Locale parse(String locale) {
final Matcher m = localePattern.matcher(locale);
if (m.find()) {
return new Locale.Builder()
.setLanguage(m.group("lang"))
.setScript(m.group("script"))
.setRegion(m.group("region"))
.setVariant(m.group("variant"))
.build();
} else throw new IllegalArgumentException(locale);
}
相關問題
- 1. number_to_currency語言環境轉換
- 2. Java:將字符串轉換爲特定語言環境
- 3. 從默認語言環境轉換爲英語語言環境的日期
- 4. NSDateFormatter語言環境
- 5. 在iOS 5上獲取語言環境
- 6. 如何使用FastGettext將一個字符串從一個語言環境轉換爲另一個語言環境?
- 7. Javascript語言環境日期轉換
- 8. java語言環境標記語言環境顯示名稱
- 9. 將日期轉換爲Windows中語言環境的字符串
- 10. 將NSString轉換爲特定於語言環境的NSNumber
- 11. C#將字符串轉換爲雙重語言環境
- 12. 將Unix時間戳轉換爲語言環境時區
- 13. 如何將我的java程序語言環境設置爲ccjk?
- 14. 語言環境切換器
- 15. 的Java語言環境爲String
- 16. 如何將任何語言的日期轉換爲特定語言
- 17. 如何切換不同用戶的語言環境/語言
- 18. 如何使用當前語言環境在Swift iOS中根據語言環境將1000磅轉換爲1短噸?
- 19. UTCDate在EventLog中?轉換爲正確的語言環境
- 20. 如何轉換XML文化/語言環境?
- 21. Java印地語語言環境支持?
- 22. 貨幣,語言環境
- 23. ios如何將objective-c轉換爲c語言
- 24. 將語言代碼轉換爲語言名稱的Java庫/ api
- 25. 將數字轉換成印度語言環境格式
- 26. 使用C#將文化轉換成語言環境或LCID
- 27. 如何將此C for循環轉換爲彙編語言?
- 28. 如何將這個循環從c語言轉換爲python 3?
- 29. NSDate語言環境問題
- 30. Symfony 2:轉換爲默認語言環境
我有同樣的問題。結束後檢查@字符並在其後切斷字符串。它的工作原理 - 但我不知道'zh-Hans_TH'問題,我懷疑有更多的特殊情況......所以我很好奇自己,如果有人提出更好的解決方案。 :-) – Tropper
我正在做類似於處理@:'split(「@」)(0)'的事情。談談哈克,並且不夠... –