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
- alpha
- string compare ?-nocase? ?-length length? string1 string2
- 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
- string wordend 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 строчной буквы алфавита.
- Любой символ 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]).
- строка 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