Спецификатор Java String.Format () 's' - странное поведение - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть следующий код:

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";

Проблема: Проблема в том, что вставляется "\ n" перед спецификатором% 3s, если 3-й аргумент равен 1или длиной в 2 символа, например, «1», «12» и т. д. Если длина составляет 3 символа и более, например, «123» и т. д., возврат каретки не вставляется.

Вопрос: Как избавиться от возврата каретки перед аргументом% 3s, если он имеет длину 1 или 2 символа?

1 Ответ

1 голос
/ 12 сентября 2011

Я думаю, что вы ищете %1$s, %2$s и т. Д. То, что вы указали в строке формата, фактически дополняет вставленные значения до длины, которую вы задаете, например, 1, 2 и 3 символа.

...