zoukankan      html  css  js  c++  java
  • tcl/t字符串操作【二】

    确定字符串类型:

    string is digit 1234

    =>1

    string is digit “abc”

    =>0

    默认如果字符串为空,对任何类型 string is 都返回 1 ,可以指定 -strict 选项强制要求在字符串为空是返回 0:

    string is control “”

    =>1

    string is control –strict “”

    =>0

    string is 命令支持的字符类型

    类型

    测试对象

    Alnum

    全为 Unicode 字母或数字

    alpha

    全为 Unicode 字母

    ascii

    全为 7 位 ASCII 字符

    boolean

    可以识别为布尔型值( 0 1 no yes true false on off )

    control

    全为 Unicode 控制字符

    digit

    全为 Unicode 数字

    double

    双精度浮点值(忽略前后的空白)。如果检测到上下界溢出,则将 -failindex 变量值设为 -1

    false

    可识别为布尔型的值“非“( 0 false no off )

    true

    可识别为布尔型的值“是( 1 true yes on )

    graph

    全为非空白的 Unicode 打印字符

    integer

    32 位整型值(忽略前后的空白)。如果检测到上下界溢出,则将 -failindex 变量值设为 -1

    list

    一个有效的列表结构。如果列表结构不正确, -failindex 变量会设置为列表中第一个导致结构无效的元素

    lower

    全为 Unicode 小写字母

    upper

    全为 Unicode 大写字母

    print

    全为 Unicode 打印字符(包括空白)

    punct

    全为 Unicode 标点符号

    space

    全为 Unicode 空白符号

    wideinteger

    长整型变量(忽略前后的空白)。如果检测到上下界溢出,则将 -failindex 变量值设为 -1

    wordchar

    全为字母和连接符(主要就是指下划线)

    xdigit

    全为十六进制数,包括 0~9 , a~f,A~F

     

    用 format 创建字符串:

    format “ The square root of 10 is %.3f” [expr sqrt(10)]

    => The square root of 10 is 3.162

    format 基本上支持 ANSI C 的 sprintf 定义的所有转换符,如 %d 表示十进制整数, %x 表示十六进制整数, %e 表示指数形式的实数。

     

    用 scan 解析字符串:

    scan “16 units, 24.2% margin” “%d units, %f” a b

    =>2

    结果 a 的值为 16 , b 的值为 24.2

     

    通配符样式的模式匹配: string match

    string match ?-nocase? pattern string

    返回 1 —匹配, 0 —不匹配

    eg:

    string match a* “alpha”

    =>1

    string match a* “bat”

    =>0

    string match a* “Amazing”

    =>0

    string match –nocase a* “Amazing”

    =>1

     

    使用正则表达式进行模式匹配: regexp 命令

    regexp 命令,返回 0 或者 1 ,表示能否匹配。用法:

    regexp pattern string ?var1 var2 var3…?

    eg:

    regexp {^[0-9]+$} 510

    =>1

    regexp {^[0-9]+$} -510

    =>0

    如果给出 ?var1 var2 var3…? 选项,则 var1 存入与整个正则表达式匹配的子字符串, var2 存入与捕获到的第一个子表达式相匹配的子字符串,一次类推。 eg:

    regexp {([0-9]+)*([a-z]+)} “Walk 10 km” a b c

    结果 a 的值为 ”10km” , b 的值为 10 , c 的值为 km

    可以指定 -start 选项指定开始匹配的位置; -all 选项指定查找尽量多次的匹配; -nocase 选项指定不区分大小写。

    -indices 选项指明额外的变量不应该用于存放匹配的子字符串的值,而是存放给出子字符串范围的起始索引。 eg :

    regexp –indices {([0-9]+)*([a-z]+)} “Walk 10 km” a b c

    结果 a 的值为 5 9 , b 的值为 5 6 , c 的值为 8 9.

    -inline 选项让 regexp 把匹配变量返回为一个数据列表。

    regexp –inline {([0-9]+)*([a-z]+)} “Walk 10 km”

    =>{10 km} 10 km

     

    使用正则表达式进行替换: regsub

    regsub pattern string replace var

    regsub there “ they live there lives ” their x

    =>1

    返回 1 —表示匹配, 0 —表示不匹配。

    替换后的结果赋给参数 x ,因此 x 的值为 ”they live their lives ”

    通常, regsub 只进行简单的替换,只替换最先出现的匹配项。然而,如果制定了 -all 选项,则替换所有:

    regsub –all a “ababa” zz x

    =>1

    x 的值为 ”zzbzzbzz”

    还可以指定 -start 、 -nocase 等选项。

  • 相关阅读:
    关于博客
    latex句首缩进空格
    javable 之Iterable
    javable之Comparable
    常量池与Integer和String的“==”
    静态多态与动态多态
    String和StringBuilder效率不同的原理
    equals和hashcode
    Eclipse里面使用checkstyle(Google style)
    矩阵链乘问题
  • 原文地址:https://www.cnblogs.com/kane1990/p/2293985.html
Copyright © 2011-2022 走看看