String.format или getString

Для форматирования строки я всегда использую String.format(getString(R.string.something),arg1)

Однако я видел в документации, что getString(string, args) может сделать то же самое.

Поэтому мне интересно, почему все используют String.format, если getString может сделать то же самое

Спасибо


person Herel Adrastel    schedule 11.11.2016    source источник
comment
Ответ: Да. См. ответ с наибольшим количеством голосов здесь. stackoverflow.com/questions/12627457 /   -  person IAmGroot    schedule 11.11.2016
comment
@Doomsknight, вопрос Why?. Ответ не может быть Yes   -  person Vladyslav Matviienko    schedule 11.11.2016
comment
@VladMatvienko Неправильная формулировка, извините. Под этим я подразумеваю, что они одинаковы, за исключением того, что один более прямой. Не все знают о лучших способах, и согласно связанному ответу вы можете видеть, что принятый ответ обозначает один метод, а ответ, получивший наибольшее количество голосов, обозначает второй. Так что это больше то, с чем люди сталкиваются, к тому, что используется. Я тоже не всегда программирую оптимально. Некоторые API-интерфейсы также представлены позже, после того как определенные способы кодирования уже задокументированы.   -  person IAmGroot    schedule 11.11.2016
comment
Также обратите внимание на документацию, в которой показан пример использования первого метода, а не второго. Таким образом, люди, использующие его в качестве ссылки, следуют первому использованию. developer.android.com/guide/topics/resources/   -  person IAmGroot    schedule 11.11.2016


Ответы (1)


Вы ошибаетесь, нет метода Resources.getString(string, args...) или Context.getString(string, args...). Есть Resources.getString(int, args...), который принимает int и объекты.

При форматировании строки вы должны использовать String.format(string, args...). Но в Android ваши строковые ресурсы, вероятно, находятся в папке res, поэтому у вас есть удобный метод для получения строки из ресурсов и ее форматирования с помощью String.format. Он делает то же самое, что и вы (взято из исходников Android):

@NonNull
public String getString(@StringRes int id, Object... formatArgs) throws NotFoundException {
    final String raw = getString(id);
    return String.format(mResourcesImpl.getConfiguration().getLocales().get(0), raw,
            formatArgs);
}

Вы бы использовали его как:

getString(R.string.something, arg1)

и сэкономить немного ввода.

person vladimir123    schedule 11.11.2016
comment
Извините, да, вы правы. Я неправильно понял ваш ответ в первый раз, потому что он написан на довольно сложном языке. - person Vladyslav Matviienko; 11.11.2016
comment
Я предполагаю, что его вопрос на самом деле имел в виду Resources.getString(int, args...) И что он больше направлен на то, почему они используют один метод вместо другого. - person IAmGroot; 11.11.2016