Spec-Zone.ru › Tcl/Tk

string

НАЗВАНИЕ
string — Обработка строк
СИНОПС
ОПИСАНИЕ
string cat ?string1? ?string2...?
string compare ?-nocase? ?-length length? string1 string2
string equal ?-nocase? ?-length length? string1 string2
string first needleString haystackString ?startIndex?
string index string charIndex
string is class ?-strict? ?-failindex varname? string
alnum
alpha
ascii
boolean
control
digit
double
entier
false
graph
integer
list
lower
print
punct
space
true
upper
wideinteger
wordchar
xdigit
string last needleString haystackString ?lastIndex?
string length string
string map ?-nocase? mapping string
string match ?-nocase? pattern string
*
?
[chars]
\x
string range string first last
string repeat string count
string replace string first last ?newstring?
string reverse string
string tolower string ?first? ?last?
string totitle string ?first? ?last?
string toupper string ?first? ?last?
string trim string ?chars?
string trimleft string ?chars?
string trimright string ?chars?
УСТАРЕВШИЕ ПОДКОМАНДЫ
string bytelength string
string wordend string charIndex
string wordstart string charIndex
ИНДЕКСЫ СТРОК
целое
конец
конец-N
конец+N
M+N
M-N
ПРИМЕР
СМОТРИТЕ ТАКЖЕ
КЛЮЧЕВЫЕ СЛОВА

Имя

string — Обработка строк

Синопсис

string опция аргумент ?аргумент ...?

Описание

Выполняет одну из нескольких операций со строками, в зависимости от опции. Допустимые опции (которые можно сокращать) — это:
строка cat ?строка1? ?строка2...?
Объединяет заданные строки, как если бы они были расположены непосредственно друг за другом, и возвращает получившуюся объединённую строку. Если строки отсутствуют, результат — пустая строка.

Этот примитив иногда удобнее конкатенации строк, когда требуется смешанная форма кавычек или когда целью является возврат результата конкатенации без обращения к уровню возврата - уровень 0, и он более эффективен, чем построение списка аргументов и использование join с пустой строкой-разделителем.

строка compare ?-nocase? ?-length длина? строка1 строка2
Выполняет сравнение строк строка1 и строка2 символ за символом. Возвращает -1, 0 или 1 в зависимости от того, является ли строка1 лексикографически меньше, равна или больше, чем строка2. Если указано -length, то в сравнении используются только первые длина символов. Если -length отрицательная, она игнорируется. Если указано -nocase, то строки сравниваются без учёта регистра.
строка equal ?-nocase? ?-length длина? строка1 строка2
Выполняет сравнение строк строка1 и строка2 символ за символом. Возвращает 1, если строка1 и строка2 идентичны, и 0 в противном случае. Если указано -length, то в сравнении используются только первые длина символов. Если -length отрицательная, она игнорируется. Если указано -nocase, то строки сравниваются без учёта регистра.
строка first искомаяСтрока строка-источник ?начальныйИндекс?
Ищет в строке-источнике последовательность символов, точно совпадающую с символами в искомаяСтрока. Если найдена, возвращает индекс первого символа в первом таком совпадении в строка-источник. Если не найдена, возвращает -1. Если указан начальныйИндекс (в любом из форматов, описанных в разделе ИНДЕКСЫ СТРОК), то поиск ограничивается началом с символа в строка-источник, указанного индексом. Например,
string first a 0a23456789abcdef 5

вернёт 10, но

string first a 0123456789abcdef 11

вернёт -1.

строка index строка индексСимвола
Возвращает индексСимвола-й символ аргумента строка. индексСимвола 0 соответствует первому символу строки. индексСимвола может быть указан, как описано в разделе ИНДЕКСЫ СТРОК.

Если индексСимвола меньше 0 или больше или равен длине строки, то эта команда возвращает пустую строку.

строка is класс ?-strict? ?-failindex имяПеременной? строка
Возвращает 1, если строка является допустимым членом указанного класса символов, в противном случае возвращает 0. Если указано -strict, то пустая строка возвращает 0, в противном случае пустая строка вернёт 1 для любого класса. Если указано -failindex, то если функция возвращает 0, индекс в строке, где класс больше не был допустимым, будет сохранён в переменной с именем имяПеременной. имяПеременной не будет установлено, если строка is возвращает 1. Следующие классы символов распознаются (имя класса может быть сокращено):
alnum
Любой символ Unicode алфавита или цифры.
alpha
Любой символ Unicode алфавита.
ascii
Любой символ со значением меньше \u0080 (тех, что находятся в диапазоне 7-битного ascii).
boolean
Любые формы, допустимые для Tcl_GetBoolean.
control
Любой символ Unicode управления.
digit
Любой символ Unicode цифры. Обратите внимание, что это включает символы за пределами диапазона [0-9].
double
Любые допустимые формы для double в Tcl с необязательными окружающими пробелами. В случае ошибки переполнения/потерь точности возвращается 0, и имяПеременной получит -1.
entier
Любые допустимые форматы строк для целого значения произвольного размера в Tcl с необязательными окружающими пробелами. Принимаемые форматы — это ровно те, которые принимаются C-функцией Tcl_GetBignumFromObj.
false
Любые формы, допустимые для Tcl_GetBoolean, где значение ложно.
graph
Любой символ Unicode печатного характера, кроме пробела.
integer
Любые допустимые форматы строк для 32-битного целого значения в Tcl с необязательными окружающими пробелами. В случае ошибки переполнения/потерь точности возвращается 0, и имяПеременной получит -1.
list
Любая правильная структура списка с необязательными окружающими пробелами. В случае неправильной структуры списка возвращается 0, и имяПеременной получит индекс «элемента», где произошла ошибка разбора списка, или -1, если это невозможно определить.
lower
Любой символ Unicode строчной буквы алфавита.
print
Любой символ Unicode печатного характера, включая пробел.
punct
Любой символ Unicode пунктуации.
space
Любой символ Unicode пробела, включая монгольский разделитель гласных (U+180e), пробел нулевой ширины (U+200b), объединитель слов (U+2060) или пробел нулевой ширины без разрыва (U+feff) (=BOM).
true
Любые формы, допустимые для Tcl_GetBoolean, где значение истинно.
upper
Любой символ заглавной буквы алфавита в наборе символов Unicode.
wideinteger
Любые допустимые форматы для широкого целого числа в Tcl с необязательными окружающими пробелами. В случае ошибки переполнения/потерь точности возвращается 0, и имяПеременной получит -1.
wordchar
Любой символ Unicode слова. Это любая буквенно-цифровая буква, а также любые знаки препинания-соединители Unicode (например, нижнее подчеркивание).
xdigit
Любой символ шестнадцатеричной цифры ([0-9A-Fa-f]).
В случае boolean, true и false, если функция возвращает 0, то имяПеременной всегда будет установлено в 0 из-за различной природы допустимого булевого значения.
строка last искомаяСтрока строка-источник ?последнийИндекс?
Ищет в строке-источнике последовательность символов, точно совпадающую с символами в искомаяСтрока. Если найдена, возвращает индекс первого символа в последнем таком совпадении в строка-источник. Если совпадений нет, возвращает -1. Если указан последнийИндекс (в любом из форматов, описанных в разделе ИНДЕКСЫ СТРОК), то при поиске будут рассматриваться только символы в строка-источник до или в позиции последнийИндекс. Например,
string last a 0a23456789abcdef 15

вернёт 10, но

string last a 0a23456789abcdef 9

вернёт 1.

строка length строка
Возвращает десятичную строку, представляющую количество символов в строка. Обратите внимание, что это не обязательно совпадает с количеством байтов, используемых для хранения строки. Если значение представляет собой массив байтов (такие, как полученные при чтении из канала с бинарным кодированием), то эта функция вернёт фактическую длину в байтах.
строка map ?-nocase? отображение строка
Заменяет подстроки в строка на основе пар ключ-значение в отображение. отображение — это список ключ значение ключ значение ..., как возвращается функцией array get. Каждый экземпляр ключа в строке будет заменён соответствующим значением. Если указано -nocase, то соответствие выполняется без учёта различий в регистре. И ключ, и значение могут содержать несколько символов. Замена выполняется в порядке следования, поэтому ключ, первый в списке, проверяется первым, и так далее. строка обрабатывается только один раз, поэтому более ранние замены ключей не повлияют на соответствия последующим ключам. Например,
string map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc

вернёт строку 01321221.

Обратите внимание, что если более ранний ключ является префиксом более позднего, он полностью замаскирует более поздний. Поэтому, если предыдущий пример переупорядочить так:

string map {1 0 ab 2 a 3 abc 1} 1abcaababcabababc

он вернёт строку 02c322c222c.

строка match ?-nocase? шаблон строка
Проверяет, соответствует ли шаблон строка; возвращает 1, если соответствует, и 0, если не соответствует. Если указано -nocase, то шаблон пытается сопоставить строку без учёта регистра. Для соответствия двух строк их содержимое должно быть идентичным, за исключением следующих специальных последовательностей, которые могут встречаться в шаблон:
*
Соответствует любой последовательности символов в строка, включая пустую строку.
?
Соответствует любому одиночному символу в строка.
[символы]
Соответствует любому символу в наборе, заданном символы. Если в символы присутствует последовательность вида x-y, то будет соответствовать любой символ между x и y включительно. При использовании с -nocase конечные точки диапазона преобразуются в нижний регистр вначале. В то время как {[A-z]} соответствует «_» при чувствительном к регистру соответствии (поскольку «_» находится между «Z» и «a»), с -nocase это считается аналогично {[A-Za-z]} (и, вероятно, так и подразумевалось в первом месте).
\x
Соответствует одиночному символу x. Это предоставляет способ избежать специальной интерпретации символов *?[]\ в шаблон.
строка range строка начало конец
Возвращает диапазон последовательных символов из строка, начиная с символа с индексом начало и заканчивая символом с индексом конец. Индекс 0 соответствует первому символу строки. начало и конец могут быть указаны, как и для метода index. Если начало отрицательное, оно обрабатывается как ноль, а если конец больше или равно длине строки, то он обрабатывается как конец. Если начало больше конец, то возвращается пустая строка.
строка repeat строка количество
Возвращает строка, повторённую количество раз.
строка replace строка начало конец ?новаяСтрока?
Удаляет диапазон последовательных символов из строки, начиная с символа с индексом first и заканчивая символом с индексом last. Индекс 0 относится к первому символу строки. First и last можно указать так же, как и для метода index. Если указано newstring, то оно помещается в удаленный диапазон символов. Если first меньше нуля, то оно обрабатывается как ноль, а если last больше или равно длине строки, то оно обрабатывается как end. Если first больше last или длины исходной строки, или last меньше 0, то исходная строка возвращается без изменений.
string reverse string
Возвращает строку такой же длины, как string, но с символами в обратном порядке.
string tolower string ?first? ?last?
Возвращает значение, равное string, за исключением того, что все символы верхнего (или заглавного) регистра были преобразованы в нижний регистр. Если указано first, оно относится к индексу первого символа в строке для начала изменения. Если указано last, оно относится к индексу символа в строке, где изменение должно закончиться (включительно). first и last можно указать в форматах, описанных в ИНДЕКСЫ СТРОК.
string totitle string ?first? ?last?
Возвращает значение, равное string, за исключением того, что первый символ в string преобразуется в его вариант заглавного регистра Юникода (или верхнего регистра, если варианта заглавного регистра нет), а остальная часть строки преобразуется в нижний регистр. Если указано first, оно относится к индексу первого символа в строке для начала изменения. Если указано last, оно относится к индексу символа в строке, где изменение должно закончиться (включительно). first и last можно указать в форматах, описанных в ИНДЕКСЫ СТРОК.
string toupper string ?first? ?last?
Возвращает значение, равное string, за исключением того, что все символы нижнего (или заглавного) регистра были преобразованы в верхний регистр. Если указано first, оно относится к индексу первого символа в строке для начала изменения. Если указано last, оно относится к индексу символа в строке, где изменение должно закончиться (включительно). first и last можно указать в форматах, описанных в ИНДЕКСЫ СТРОК.
string trim string ?chars?
Возвращает значение, равное string, за исключением того, что любые ведущие или хвостовые символы, присутствующие в строке, заданной chars, удаляются. Если chars не указано, то удаляются пробелы (любой символ, для которого string is space возвращает 1, и " ").
string trimleft string ?chars?
Возвращает значение, равное string, за исключением того, что любые ведущие символы, присутствующие в строке, заданной chars, удаляются. Если chars не указано, то удаляются пробелы (любой символ, для которого string is space возвращает 1, и " ").
string trimright string ?chars?
Возвращает значение, равное string, за исключением того, что любые хвостовые символы, присутствующие в строке, заданной chars, удаляются. Если chars не указано, то удаляются пробелы (любой символ, для которого string is space возвращает 1, и " ").

Устаревшие подкоманды

Эти подкоманды в настоящее время поддерживаются, но, вероятно, исчезнут в будущих выпусках, так как их функциональность либо практически никогда не используется, либо сильно вводит в заблуждение.
string bytelength string
Возвращает десятичную строку, указывающую количество байтов, используемых для представления string в памяти при кодировке как внутренней модифицированной UTF-8 Tcl; Tcl может использовать и другие кодировки для string, и не гарантирует использование только одной кодировки для конкретной string. Поскольку UTF-8 использует переменное количество байтов для представления символов Юникода, длина в байтах обычно не совпадает с длиной в символах. Случаи, когда скрипту требуется длина в байтах, редки.

В подавляющем большинстве случаев следует использовать операцию string length (включая определение длины значения массива байтов Tcl). Обратитесь к справочной записи Tcl_NumUtfChars для получения более подробной информации о представлении UTF-8.

Формально, операция string bytelength возвращает содержимое поля length структуры Tcl_Obj после вызова Tcl_GetString для обеспечения заполнения поля bytes. Это вряд ли будет полезно для Tcl-скриптов, поскольку внутренняя кодировка Tcl не является строгим UTF-8, а скорее модифицированным CESU-8 с ненормализованным NUL (идентичным тому, который используется во многих местах механизмом сериализации Java), чтобы обеспечить базовую обработку с функциями C, не поддерживающими Юникод. Поскольку это представление должно использоваться только реализацией Tcl, количество байтов, используемых для хранения представления, имеет очень низкую ценность (за исключением кода расширения C, который имеет прямой доступ для целей управления памятью и т. д.)

Примечание по совместимости: эта подкоманда, вероятно, будет удалена в будущих версиях Tcl. Лучше использовать команду encoding convertto для преобразования строки в известную кодировку, а затем применить string length к этой кодировке.

string length [encoding convertto utf-8 $theString]
string wordend string charIndex
Возвращает индекс символа, расположенного сразу после последнего символа в слове, содержащем символ charIndex в string. charIndex можно указать в форматах, описанных в ИНДЕКСЫ СТРОК. Слово считается любым непрерывным диапазоном буквенно-цифровых (символы Юникода или десятичные цифры) или символов подчеркивания (знаки препинания для соединения Юникода), или любым одиночным символом, отличным от этих.
string wordstart string charIndex
Возвращает индекс первого символа в слове, содержащем символ charIndex в string. charIndex можно указать в форматах, описанных в ИНДЕКСЫ СТРОК. Слово считается любым непрерывным диапазоном буквенно-цифровых (символы Юникода или десятичные цифры) или символов подчеркивания (знаки препинания для соединения Юникода), или любым одиночным символом, отличным от этих.

Индексы строк

При ссылке на индексы в строке (например, для string index или string range) поддерживаются следующие форматы:
integer
Для любого значения индекса, которое проходит проверку string is integer -strict, символ указывается по этому целочисленному индексу (например, 2 относится к “c” в “abcd”).
end
Последний символ строки (например, end относится к “d” в “abcd”).
end-N
Последний символ строки минус указанное целое смещение N (например, “end-1” относится к “c” в “abcd”).
end+N
Последний символ строки плюс указанное целое смещение N (например, “end+-1” относится к “c” в “abcd”).
M+N
Символ, указанный по целочисленному индексу, который является суммой целых значений M и N (например, “1+1” относится к “c” в “abcd”).
M-N
Символ, указанный по целочисленному индексу, который является разностью целых значений M и N (например, “2-1” относится к “b” в “abcd”).

В указанных выше спецификациях целое значение M не содержит хвостовых пробелов, а целое значение N не содержит ведущих пробелов.

Пример

Проверить, является ли строка в переменной string правильным непустым префиксом строки foobar.
set length [string length $string]
if {$length == 0} {
    set isPrefix 0
} else {
    set isPrefix [string equal -length $length $string "foobar"]
}

См. также

expr, list

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/string.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API