clojure-koans/src/koans/02_strings.clj
2018-03-15 14:58:49 +03:00

70 lines
2.2 KiB
Clojure
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(ns koans.02-strings
(:require [koan-engine.core :refer :all]
[clojure.string :as string]))
(meditations
"Строка — это текст, обрамлённый двойными кавычками"
(= __ "hello")
"Но это лишь вершина айсберга"
(= __ (str 'world))
"Создавая одну строку можно объединением нескольких"
(= "Cool right?" (str __ __))
"Можно получить символьный литерал"
(= \C (get "Characters" __))
"Сосчитать сколько их"
(= __ (count "Hello World"))
"Но он — не строка"
(= __ (= \c "c"))
"А что если нужна лишь часть строки?"
(= "World" (subs "Hello World" __ __))
"Объединяем элементы в строку"
(= __ (string/join '(1 2 3)))
"Объединяем, но разделяя между собой"
(= "1, 2, 3" (string/join __ '(1 2 3)))
"Можно разделить построчно"
(= [__ __ __] (string/split-lines "1\n2\n3"))
"Можно инвертировать"
(= __ (string/reverse "hello"))
"Можно найти индекс первого совпадения"
(= 0 (string/index-of "hello world" __))
"Или последнего"
(= __ (string/last-index-of "hello world, hello" "hello"))
"А если ничто не совпало, то что мы получим?"
(= __ (string/index-of "hello world" "bob"))
"Иногда неплохо бы избавиться от пробелов"
(= __ (string/trim " \nhello world \t \n"))
"Тест на символьный литерал"
(= __ (char? \c))
"Тут точно не пройдёт"
(= __ (char? "a"))
"«Чары» — они не строки"
(= __ (string? \b))
"А строки — строки"
(= true (string? __))
"Иногда и пустые"
(= __ (string/blank? ""))
"Хотя на первый взгляд и не скажешь"
(= __ (string/blank? " \n \t "))
"Всё же большинство строк не пусты"
(= __ (string/blank? "hello?\nare you out there?")))