Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Clojure
/

Форматирование строк

Clojure: Форматирование строк

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

Функции format и printf

Функции format и printf ожидают в качестве первого аргумента строку-шаблон и несколько значений, которые будут в этот шаблон подставлены. Разница же между функциями в том, что вызов format вычисляется в строку, а printf сразу выводит значение на экран (результатом же вычисления будет nil). Шаблон может содержать произвольный текст, в нужные места которого вставлены последовательности (подробности в классе java.util.Formatter). Вот несколько примеров применения format:

(format "Hello there, %s" "bob")
; => "Hello there, bob"
(format "%5d" 3)
; => "    3"
(format "Pad with leading zeros %07d" 5432)
; => "Pad with leading zeros 0005432"
(format "Left justified :%-7d:" 5432)
; => "Left justified :5432   :"
(format "decimal %d  octal %o  hex %x  upper-case hex %X" 63 63 63 63)
; => "decimal 63  octal 77  hex 3f  upper-case hex 3F"
(format "%.3f" 2.0)
; => "2.000"
(format "%.3f" (double (/ 5 2)))
; => "2.500"

Задание

Реализуйте функцию number-presenter, которая представляет число в нескольких форматах. Примеры:

(number-presenter 63)
; => "decimal 63  octal 77  hex 3f  upper-case hex 3F"
(number-presenter 14)
; => "decimal 14  octal 16  hex e  upper-case hex E"

Полезное

  • Официальная документация

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Clojure
/

Форматирование строк

Clojure: Форматирование строк

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

Функции format и printf

Функции format и printf ожидают в качестве первого аргумента строку-шаблон и несколько значений, которые будут в этот шаблон подставлены. Разница же между функциями в том, что вызов format вычисляется в строку, а printf сразу выводит значение на экран (результатом же вычисления будет nil). Шаблон может содержать произвольный текст, в нужные места которого вставлены последовательности (подробности в классе java.util.Formatter). Вот несколько примеров применения format:

(format "Hello there, %s" "bob")
; => "Hello there, bob"
(format "%5d" 3)
; => "    3"
(format "Pad with leading zeros %07d" 5432)
; => "Pad with leading zeros 0005432"
(format "Left justified :%-7d:" 5432)
; => "Left justified :5432   :"
(format "decimal %d  octal %o  hex %x  upper-case hex %X" 63 63 63 63)
; => "decimal 63  octal 77  hex 3f  upper-case hex 3F"
(format "%.3f" 2.0)
; => "2.000"
(format "%.3f" (double (/ 5 2)))
; => "2.500"

Задание

Реализуйте функцию number-presenter, которая представляет число в нескольких форматах. Примеры:

(number-presenter 63)
; => "decimal 63  octal 77  hex 3f  upper-case hex 3F"
(number-presenter 14)
; => "decimal 14  octal 16  hex e  upper-case hex E"

Полезное

  • Официальная документация

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

(ns str-format-test
  (:require [test-helper :refer [assert-solution]]
            [index :refer [number-presenter]]))

(assert-solution
 [[63] [14] [2]]
 ["decimal 63  octal 77  hex 3f  upper-case hex 3F"
  "decimal 14  octal 16  hex e  upper-case hex E"
  "decimal 2  octal 2  hex 2  upper-case hex 2"]
 number-presenter)
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →