Язык Java для строки

Мне нужно преобразовать Locale в String, как я могу это сделать:

У меня Locale loc и String loc1, вам нужно преобразовать значение из locale в String. спасибо

+1
02 мар. '12 в 15:36
источник поделиться
3 ответа

В зависимости от того, что вы хотите сделать с ним, вы можете использовать метод toString класса Locale:

http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#toString%28%29

+2
02 мар. '12 в 15:51
источник

Это действительно зависит от используемой вами версии Java. Когда вы скажете, что конвертируете в String, я предполагаю, что вы захотите:

  1. Преобразуйте его в идентификатор Locale, чтобы вы могли легко воссоздать Locale в будущем.
  2. Передайте его как строковое представление в какую-то часть системы.
  3. Получить (возможно, родное) название языка, страны или объекта Locale.

Другие указали вам на документацию, но я думаю, что лучше пройти несколько возможностей.

Объявление 1. Если вам нужно преобразовать в идентификатор Locale, лучшим способом с Java 7 (который действительно не существует в предыдущих выпусках) является toLanguageTag().

Это потому, что вы можете легко хранить идентификатор Locale в строке (включая все параметры, такие как скрипт, расширения Unicode и т.д.) И воссоздать объект Locale, используя forLanguageTag (String) без потери информации. Простой toString() не сохраняет это свойство.
Следующий фрагмент кода иллюстрирует мою точку зрения:

Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = locale.toLanguageTag();
Locale recreatedLocale = Locale.forLanguageTag(localeId);

До Java 7 вам действительно нужно было использовать toString() и вручную обрабатывать страны и варианты (для Locale состояло из трех идентификаторов, разделенных символом underscore, т.е. no_NO_NY.)

Объявление 2. Если вам необходимо передать Locale в другую часть системы (т.е. Веб-службу), toString() может и не быть тем, что вы ищете. Это из-за того, что я написал выше - если вам нужна тире в качестве разделителя и не так много для вариантов, я бы пошел с методами getLanguage() и getCountry(), а не с plain toString():

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = MessageFormat.format("{0}-{1}", 
                                       uiLocale.getLanguage(),
                                       uiLocale.getCountry());

Этот метод должен хорошо работать с версиями Java с версии 1.4.

Объявление 3. Если вы хотите отобразить отображаемое имя языка, страны или локали, чтобы пользователь мог выбрать действительный язык (то есть в своем профиле), то вы, вероятно, ищете getDisplayCountry (Locale), getDisplayLanguage (Locale) и getDisplayName (Локаль). Вы можете использовать их для отображения имен на целевом пользовательском языке (при условии, что JVM имеет соответствующие переводы, что верно для многих языков):

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String languageName = uiLocale.getDisplayLanguage(uiLocale);
String countryName = uiLocale.getDisplayLanguage(uiLocale);
// usually something like langage (country), i.e. polski (Polska)
String localeName = uiLocale.getDisplayName(uiLocale);
+21
02 мар. '12 в 20:06
источник

Его очень просто использовать следующий код, считайте, что вы используете locale для преобразования из текущей текущей даты каландра в Hijri Calander.

    Chronology iso = ISOChronology.getInstanceUTC();
    Chronology hijri = IslamicChronology.getInstanceUTC();
    LocalDate todayIso = new LocalDate(2016, 1,
            20, iso);
    LocalDate todayHijri = new LocalDate(todayIso.toDateTimeAtStartOfDay(),
            hijri);
    String currenthijridate = "" + todayHijri;
    /*currenthijridate will will appear as 1437-04-08 which is a string now its simple String=""+locale*/
0
20 янв. '16 в 6:22
источник

Посмотрите другие вопросы по меткам или Задайте вопрос