string(3tcl)

NAME
string - 操纵字符串

总览 SYNOPSIS
string option arg ?arg ...?

描述 DESCRIPTION

依赖于 option (选项)进行某种字符串操作。合法的 option (可以是缩写)有:

string bytelength string
    返回一个十进制字符串，给出在内存中表示 string 用的字节数。因为 UTF-8 使用一到三字节来表示 Unicode 字符，字节长度可能与通常的字符长度不同。一个脚本关心字节长度的情况较少见。多数情况下，你应该使用 string length 操作。关于 UTF-8 表示的详情请参考 Tcl_NumUtfChars 手册页。

string compare ?-nocase? ?-length int? string1 string2
    对字符串 string1 和 string2 进行逐个字符的比较。依赖于 string1 在词典顺序上(lexicographically)小于、等于、大于 string2，返回 -1、0、或 1。 如果指定了 -length ，则在比较中只使用前 length 个字符。如果 -length 是负数，则被忽略。如果指定了 -nocase ，则使用大小写不敏感方式比较字符串。

string equal ?-nocase? ?-length int? string1 string2
    对字符串 string1 和 string2 进行逐个字符的比较。如果 string1 和 string2 等同则返回 1，否则返回 0。如果指定了 -length ，则在比较中只使用前 length 个字符。如果 -length 是负数，则被忽略。如果指定了 -nocase ，则使用大小写不敏感方式比较字符串。

string first string1 string2 ?startIndex?
    在 string2 中查找精确的匹配 string1 中的字符的一个字符序列。如果找到，返回 string2 中的第一个这样的匹配的第一个字符的索引。如果未找到，返回 -1。 如果指定了 startIndex (以可被 index 方法接受的任何形式)，则约束查找为在 string2 中从用索引指定的字符开始。例如，
    string first a 0a23456789abcdef 5 将返回 10, but string first a 0123456789abcdef 11 将返回 -1.

string index string charIndex
    返回 string 参数的第 charIndex 个字符。charIndex 中 0 对应着字符串的第一个字符。
     charIndex 可以被指定如下:

    integer
        用整数索引指定字符。

    end 字符串的最后一个字符。

    end-integer
        字符串最后一个字符减去指定整数偏移量(例如， end-1 将参照“abcd”中的“c”)。

    如果 charIndex 小于 0 或大于等于字符串的长度则返回一个空串。

string is class ?-strict? ?-failindex varname? string
    如果 string 是指定字符类的一个有效成员则返回 1，否则返回 0。如果指定了 -strict，则对一个空串返回 0，否则在任何类上对一个空串返回 1。如果指定了 -failindex，则若函数返回 0，把字符串中类不再有效的地方的索引存储到叫做 varname 的变量中。如果函数返回 1则不设置 varname 。识别下列字符类(类的名字可以被缩写):

    alnum
        任何 Unicode 字母或数字字符。

    alpha
        任何 Unicode 字母字符。

    ascii
        值小于 \u0080 的任何字符(这是 7-bit ascii 的范围)。

    boolean
        Tcl_GetBoolean 所允许的任何形式。

    control
        任何 Unicode 控制字符。

    digit
        任何 Unicode 数字字符。注意这包括在 [0-9] 范围外的字符。

    double
        双精度数在 Tcl 中的任何有效形式，可以有可选的围绕白空格。在值下溢/上溢的情况下，返回 0 并且 varname 将包含 -1。

    false
        Tcl_GetBoolean 允许的任何形式，这里的值是假。

    graph
        除了空格之外的任何 Unicode 打印字符。

    integer
        整数在 Tcl 中的任何有效形式，可以有可选的围绕白空格。在值下溢/上溢的情况下，返回 0 并且 varname 将包含 -1。

    lower
        任何 Unicode 小写字母字符。.

    print
        包括空格在内的任何 Unicode 打印字符。

    punct
        任何 Unicode 标点字符。

    space
        任何 Unicode 空格字符。

    true
        Tcl_GetBoolean 所允许的任何形式，这里的值是真。

    upper
        在 Unicode 中的任何大写字符。

    wordchar
        任何 Unicode 单字字符。它是任何字母字符和 Unicode 连接符标点字符(例如，下划线)。

    xdigit
        任何十六进制数字字符 ([0-9A-Fa-f]).

    在 boolean、true 和 false 的情况下，如果函数将返回 0，则 varname 总是被设置为 0，原因是一个有效 boolean 值有多种本地(表示)。

string last string1 string2 ?startIndex?
    在 string2 中查找精确的匹配在 string1 中的字符的一个字符序列。如果找到，返回在 string2 中最后一个这样的匹配的第一个字符的索引。如果没有匹配，则返回 -1。 如果指定了 startIndex(以可被 index 方法接受的任何形式)， 则查找只针对 string2 中用 startIndex 指定的和此前的字符。例如，
    string last a 0a23456789abcdef 15 将返回 10, 而 string last a 0a23456789abcdef 9 将返回 1.

string length string
    返回一个十进制字符串，给出在 string 中字符的数目。注意这不是必须与用于存储这个字符串的字节的数目相同。

string map ?-nocase? charMap string
    基于在 charMap 中的键-值对替代 string 中的字符。charMap 是形如 key value key value ... 的一个列表，同于从 array get 返回的那种形式。在字符串中这些键的每个实例将被替代为相应的值。如果指定了 -nocase，则进行匹配时不区别大小写。key 和 value 二者都可以是多字节的。以一种有次序的方式进行替代，所以在列表中出现在最前面的键将被首先检查，以此类推。string 只被重复操作(iterate)一次，所以早先的键替代将不影响以后的键匹配。例如，
    string map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc 将返回字符串 01321221.

string match ?-nocase? pattern string
    查看 pattern 是否匹配 string；如果是则返回 1，不是则返回 0。 如果指定了 -nocase，则针对字符串的模式匹配采用大小写不敏感的方式。 对于要进行匹配的这两个字符串，除了在 pattern 中可以出现的下列特殊序列之外它们的内容必须相同:

    *   匹配 string 中任何字符的一个序列，包括一个空字符。

    ?   匹配 string 中的一个单一字符。

    [chars]
        匹配在用 chars 给出的集合中的任何字符。如果在 chars 中出现一个形式是 x-y 的一个序列，则匹配在 x 和 y,之间的任何字符，包括二者。 当与 -nocase 一起使用的时候，范围的端点首先被转换为小写。所以在大小写敏感匹配时 {[A-z]} 匹配‘_’(‘_’位于‘Z’和‘a’之间)，加上 -nocase 则将被象 {[A-Za-z]} 那样对待(并可能是前者的真实意图)。

    \x  匹配单一字符 x。这提供了一种方式避免在 pattern 中对字符 *?[]\ 做特殊解释。

string range string first last
    从 string 返回一个范围的连续字符，从索引是 first 的字符开始并结束于索引是 last 的字符。 索引 0 参照字符串的 第一个字符。可以按 index 方法的方式指定 first 和 last 。 如果 first 小于零，则把它作为零对待，而如果 last 大于等于字符串的长度，则把它作为 end 对待。如果 first 大于 last 则返回空串。

string repeat string count
    把 string 重复 count 次后返回。

string replace string first last ?newstring?
    从 string 删除一个范围的连续字符，范围从索引是 first 的字符开始并结束于索引是 last 的字符。索引 0 参照字符串的第一个字符。可以按 index 方法的方式指定 first 和 last 。如果指定了 newstring ，则把它放置在删除的字符范围中。如果 first 小于零，则把它作为零对待，而如果 last 大于等于字符串的长度，则把它作为 end 对待。如果 first 大于 last 或最初的字符串的长度 ，或者 last 小于 0，则不做变动的返回最初的字符串。

string tolower string ?first? ?last?
    返回一个等同于 string 的值，但所有大写(或标题)字母都被转换为小写。如果指定了 first，则它参照字符串中开始修改的第一个字符的索引。如果指定了 last，则它参照字符串中修改停止到(包括它)的那个字符的索引。按 index 方法的方式指定 first 和 last。

string totitle string ?first? ?last?
    返回等同于 string 的一个值，但把 string 的第一个字符转换成它的 Unicode 标题大写变体(如果没有标题大写变体则为大写)而把字符串的其余部分转换成小写。如果指定了 first，则它参照字符串中开始修改的第一个字符的索引。如果指定了 last，则它参照字符串中修改停止到(包括它)的那个字符的索引。按 index 方法的方式指定 first 和 last。

string toupper string ?first? ?last?
    返回一个等同于 string 的值，但所有小写(或标题)字母都被转换为大写。如果指定了 first，则它参照字符串中开始修改的第一个字符的索引。如果指定了 last，则它参照字符串中修改停止到(包括它)的那个字符的索引。按 index 方法的方式指定 first 和 last。

string trim string ?chars?
    返回一个等同于 string 的值，但删除了任何前导或尾随的用 chars 给出的字符集合中字符。如果未指定 chars 则删除白空格(空格、tab、换行、回车)。

string trimleft string ?chars?
    返回一个等同于 string 的值，但删除了任何前导的用 chars 给出的字符集合中字符。如果未指定 chars 则删除白空格(空格、tab、换行、回车)。

string trimright string ?chars?
    返回一个等同于 string 的值，但删除了任何尾随的用 chars 给出的字符集合中字符。如果未指定 chars 则删除白空格(空格、tab、换行、回车)。

string wordend string charIndex
    返回包含 string 的第 charIndex 个字符的那个字最后的字符后面的那个字符的索引。按 index 方法的方式指定 charIndex 。一个字被认为是任何连续范围的 alphanumeric (Unicode 字母或十进制数字)或下划线(Unicode 连接符标点)字符，或除了这些之外的任何单一字符。

string wordstart string charIndex
    返回包含 string 的第 charIndex 个字符的那个字的第一个字符的索引。按 index 方法的方式指定 charIndex 。一个字被认为是任何连续范围的 alphanumeric (Unicode 字母或十进制数字)或下划线(Unicode 连接符标点)字符，或除了这些之外的任何单一字符。

参见 SEE ALSO
expr(n), list(n)

关键字 KEYWORDS
case conversion, compare, index, match, pattern, string, word, equal, ctype

[中文版维护人]
寒蝉退士

[中文版最新更新]
2001/11/15

《中国 Linux 论坛 man 手册页翻译计划》:
http://cmpp.linuxforum.net