Уроки Tcl

Начало Уроки Tk Файлы
Статьи Уроки Tcl Гостевая книга
Предыдущий урок - #18: Сравнение строк - compare match first last wordend

#19: Обработка строк - tolower toupper trim format

Команда Tcl string так же включает несолько команд для обработки строк. Когда используется одна из следующих команда, возвращается новая строка, а старая остаётся неизменной. Если нужно заменить старое значение, то следует присвоить новое значение командой set.

Tcl включает в себя команды, которые получают данные из разных источников, и создают новую строку. Команда format позволяет создать строку из разных данных, форматированных произвольным способом.

string tolower строка
    Возвращает строку в которой все буквы печатные.
string toupper строка
    Возвращает строку в которой все буквы заглавные.
string trim строка ?удаляемыйСимвол?
    Возвращает строку в которой удалены все удаляемыеСимволы. По умолчанию удаляемыйСимвол - это пустое место (пробелы, табуляция, новая строка).
string trimleft строка ?удаляемыйСимвол?
    Возвращает строку в которой с левой стороны удалены все удаляемыеСимволы. По умолчанию удаляемыйСимвол - это пустое место (пробелы, табуляция, новая строка).
string trimright строка ?удаляемыйСимвол?
    Возвращает строку в которой с правой стороны удалены все удаляемыеСимволы. По умолчанию удаляемыйСимвол - это пустое место (пробелы, табуляция, новая строка).
string format формат ?арг1 арг2 ... аргN?
    Возвращает строку, форматированную аналогично процедуре sprintf по стандарту ANSI. Формат определяет, как будет выполняться форматирование.
Полное описание формата можно найти на странице forman справочника man. В формате используются обычные слова, последовательности с обратной дробью, и слова вида %поле. %Поля - это слово, начинающееся с символа % и завершающееся:
  • s ... Данные строкового типа
  • d ... Данные - десятичное целое число
  • x ... Данные - шестнадцатеричное целое
  • o ... Данные - восьмеричное целое
  • f ... Данное - десятичная дробь
За символом % может следовать:
  • - ... В поле данные выравниваются по левому краю
  • + ... Данные выравниваются по правому краю
Значение выравнивания может быть дополнено числом, задающим минимум свободного места, которое займут данные.

О формате используемом командой format нужно сказать поподрбнее.

В простейшем случае формат может быть просто "%s". Тогда просто будет выведен арг как строка, например:

set xx [fomat "%s" "Это тест"]
и
set xx "Это тест"

являются эквивалентными.

Команда format может быть удобна когда требуется построить таблицу, и каждая ячейка должна занимать одинаковое количество места, или когда нужно вывести дробные числа с определенным количеством знаков.

В примере показана команда format, использованная для создания простой таблицы. Строка %-20s помещает первый аргумент в поле шириной 20 символов, при этом первый символ помещается в левом углу поля. Это называет выравнивание по левому краю.

Строка %10s помещает второй аргумент в поле шириной 10 символов, и последний символ аргумента в правом углу поля. Это называется выравнивание по правому краю, режим по умолчанию.

Строка %10d воспринимает второй аргумент как целое число и выравнивает по правому краю.

В последней команде format %10.2f выводит аргумент на ширине 10 символов, два из которых отводятся для дробной части.

Пример:

set upper "ЭТО СТРОКА ИЗ ЗАГЛАВНЫХ БУКВ"
set lower "это строка из прописных букв"
set trailer "В конце этой строки точки...."
set leader "....В начале этой строки точки"
set both  "(((Эта строка в скобках)))"

puts "tolower преобразовал : $upper"
puts "            в строку : [string tolower $upper]\n"
puts "toupper преобразовал : $lower"
puts "            в строку : [string toupper $lower]\n"
puts "trimright преобразовал : $trailer"
puts "              в строку : [string trimright $trailer .]\n"
puts "trimleft преобразовал : $leader"
puts "             в строку : [string trimleft $leader .]\n"
puts "trim преобразовал : $both"
puts "         в строку : [string trim $both "()"]\n"

set labels [format "%-20s %+10s " "Товар" "Цена"]
set price1 [format "%-20s %10d рублей килограмм" "Помидоры" "30"]
set price2 [format "%-20s %10d рублей килограмм" "Перец" "20"]
set price3 [format "%-20s %10d рублей килограмм" "Огурцы" "10"]
set price4 [format "%-20s %10.2f рублей за пакет" "Семечки" "4.49997"]

puts "\n Пример форматирования:\n"
puts "$labels"
puts "$price1"
puts "$price2"
puts "$price3"
puts "$price4"

Следующий урок - #20: Регулярные выражения - regexp
Горбачев "Yurez" Юрий  
Хостинг от uCoz