Есть ли спецификатор формата в Java String, как '% r' в python? - PullRequest
0 голосов
/ 22 января 2020

В python, %r return String (converts any Python object using repr()).

Есть ли в Java эквивалентный спецификатор формата?

Что я хочу получить, это sth. как

String s = "String s = \"%s\";String.format(s, s)";
return String.Format(s, s);

Таким образом, выходные данные и входные данные различаются, так как он содержит escape-символ \. Если у нас есть %r, мы можем опустить \" часть.

1 Ответ

2 голосов
/ 22 января 2020

Ближайший Java эквивалент Python %r равен %s. Преобразование %s вызовет либо formatTo(), либо toString() для аргумента, в зависимости от его типа.

Обратите внимание, что ни Python * repr(), ни Java * formatTo() или toString() предлагает какие-либо общие гарантии на то, что производится. Например, документация Python repr() гласит:

" Для многих типов эта функция пытается вернуть строку, которая выдаст объект с то же значение при передаче в eval (), в противном случае представление представляет собой строку, заключенную в угловые скобки, которая содержит имя типа объекта вместе с дополнительной информацией, часто включая имя и адрес объекта. "

и далее говорится, что класс может переопределить поведение по умолчанию repr().

В случае Java обобщенный c toString() javado c является даже менее предписывающим.

"Возвращает строковое представление объекта. Как правило, метод toString возвращает строку, которая« представляет »этот объект в текстовом виде. Результат должен быть кратким но информативное представление, которое легко прочитать человеку. "

Поскольку в 1046 * нет эквивалента Python eval(), общего Java нет Механизм SE для предоставления экранированных представлений, которые могут быть встроены в сгенерированный исходный код Java.

Таким образом, краткий ответ: Нет. Ничто не достаточно близко к тому, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...