Регистрация | Вход
[ Главная · Новые сообщения ]
Страница 1 из 11
Форум » Основной раздел » Мастерская » FAQ TCL
FAQ TCL
Vladislav 14.12.10 01:49 #1
Узнать более подробно о данных командах вы можете здесь (на англ.)

Как из текста вырезать цветовые коды и пробелы по краям?
set text [string trim [string map { {}} [stripcodes cubr $text]]]

Что такое список, а что такое текст?
Текст это, это то что в "", список в {}, список состоит из элементов.
Команда split из текста делает список, а команда join из списка делает текст. Если вы будете применять команды списка к тексту могут возникнуть ошибки и на оборот.

Как проверить есть ли фраза в данном тексте?
[string match -nocase "*текст*" $text]
[string equal -nocase "текст" $text]
Результат будет: 1- есть, 0 - нет. В первом случае можно использовать "*" и "?", например "*слово *", а во втором нет, но он понимает [].

Как проверить есть ли элемент в данном списке?
[lsearch -exact -nocase $list "текст"]
Если выдаст -1 значит нет, в другом случае выдаст позицию элемента в списке.

Зная позицию элемента в списке как его удалить?
[lreplace $list 2 2]

Как добавить элемент в список на нужную позицию
[linsert $list 5 "текст"]

Как узнать сколько символов в тексте?
[string length $text]

Как узнать сколько элементов в списке?
[llength $list]

Как вырезать не нужное из текста?
set text [string range $text 5 end-5]
Обрежет первые и последние 5 символов.

Как вырезать не нужное из списка?
set list [lrange $list 0 end-1]
Обрежет последний элемент списка.

Как выбрать нужный элемент из списка?
set text [lindex $list 0]
Выберет первый элемент.

Как выбрать случайный элемент из списка?
set text [lindex $list [rand [llength $list]]]

Как добавить к уже существующему тексту текст?
set text "123"; append text "456"
$text: 123456

Как добавить элемент к списку?
set list {"1 2 3"}; lappend list "4 5 6"
$list: {1 2 3} {4 5 6}

Как объединить два списка?
set list [concat $list1 $list2]

Как сформировать список по числу?
[lsort -real -decreasing -index 1 {{раз 1} {два 2} {ноль 0}}]

Как узнать или проверить первый символ в тексте?
[string index "текст" 0]
[string first т "текст"] == 0

Есть команда duration преобразует секунды в текстовое представление прошедшего времени. Как её можно по-быстрому русифицировать?
set time [::ccs::xdate [duration 100]]
$time: 1 минута 40 секунд
Воспользоваться процедурой из ccs.

Как добавить проверку на пользовательский флаг?
if {![matchattr $hand n]} {return}
Если пользователь не имеет флаг "n" то процедура останавливается.

Как проверить в переменной ник бота или другой?
if {[isbotnick $nick]} {return}
if {![isbotnick $nick]} {return}

Первый случай остановит процедуру если ник это бот, а второй наоборот остановит процедуру если ник не бот. Если вместо переменной вы используете текст то его надо взять в кавычки, например "Windrop".

Как мне текст привести к прописным буквам и наоборот к заглавным?
set text [string tolower "ТЕКСТ"]
$text: текст
set text [string toupper "текст"]
$text: ТЕКСТ
set text [string toupper "текст" 0 0]
$text: Текст

Как мне повторить символ?
set text [string repeat | 10]
$text: ||||||||||

Как мне перевернуть текст и как список?
set text [string reverse "текст"]
$text: тскет
set list [lreverse {раз два}]
$list: два раз

Как узнать есть ли такой namespace?
namespace children ::имя
Если нет то выдаст ошибку.

Как проверить и создать путь если его нет?
if {![file isdirectory $dir]} {file mkdir $dir}

Как проверить и создать файл если его нет?
if {![file exists $file]} {set f [open $file w+]; close $f}

Как в регулярном выражение указать только буквы и пробел?
regsub -all -- {<td>[a-zA-Zа-яА-ЯёЁ\x20]+</td>} $data "" data

Как выполнить действие с задержкой на 1 минуту?
utimer 60 [list putserv "PRIVMSG $chan :текст"]

Как сделать случайный цвет?
$::gcolor([lindex {2 3 4 5 6 7 10 12 13 14} [rand 10]])

Как выбрать рандомное число из диапазона 1960-2014?
[expr {round(rand()*(2014-1960))+1960}]

Как получить список файлов в папке?
glob -nocomplain -dir logs *.log.*

Как получить дату/время заданного вида?
set data [strftime "%a %e %b %Y - %X"]
$data: Fri 11 May 2012 - 16:45:11
Второй способ, вместо [unixtime]можно указать свою переменную:
set data [clock format [unixtime]-format "%a %e %b %Y - %H:%M:%S"]
$data: Fri 11 May 2012 - 16:45:11
Русификация:
set data [string map -nocase {Mon Понедельник Tue Вторник Wed Среда Thu Четверг Fri Пятница Sat Суббота Sun Воскресенье Jan Января Feb Февраля Mar Марта Apr Апреля May Мая Jun Июня Jul Июля Aug Августа Sep Сентября Oct Октября Nov Ноября Dec Декабря} [strftime "%a %e %b %Y - %X"]]
$data: Пятница 11 Мая 2012 - 17:16:46
Форум » Основной раздел » Мастерская » FAQ TCL
Страница 1 из 11
Поиск: