clojure-koans/src/koans/02_strings.clj

71 lines
2.2 KiB
Clojure
Raw Normal View History

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