Спецификатор Java String.Format() 's' - странное поведение
У меня есть следующий код:
String requestString=String.format(Constants.SEARCH_SETS_API,
Constants.DEVELOPER_KEY,
"ids:".concat(setId),
"1");
где
public static final String DEVELOPER_KEY = "3ansrfnt10cggo80";
public static final String SEARCH_SETS_API =
"http://api.quizlet.com/1.0/sets?"
+ "dev_key=%1s&"
+ "q=%2s&"
+ "sort=alphabetical&"
+ "whitespace=off&"
+ "page=%3s&"
+ "per_page=50&"
+ "time_format=unix&"
+ "images_only=off&"
+ "updated_since=0&"
+ "extended=on";
Проблема: Проблема в том, что перед спецификатором%3s вставляется "\ n", если аргумент 3-го размера имеет длину 1 или 2 символа, например "1", "12" и т. Д. Если он имеет длину 3 символа и больше похож на "123" и т. Д. возврат каретки не вставлен.
Вопрос: Как избавиться от возврата каретки перед аргументом%3s, если он имеет длину 1 или 2 символа?
1 ответ
Я думаю, что вы ищете %1$s
, %2$s
и т. д. То, что вы указали в строке формата, фактически добавляет вставленные значения к длине, которую вы задаете, например, 1, 2 и 3 символа.