zoukankan      html  css  js  c++  java
  • T脚本语言学习记录-工具(一)

    1、set & unset

       

     1 %set a Hello ;#定义变量 a 并赋值
     2 =>Hello
     3 %puts $a ;#输出变量值
     4 =>Hello
     5 %set a “Test Tcl” ;#重新赋值
     6 =>Test Tcl
     7 %set a ;#输出变量值,此时不加”$”
     8 => Test Tcl
     9 %puts $a ;#输出变量值,此时要加”$”
    10 =>Test Tcl
    11 %puts a ;#输出字符”a”
    12 => a
    13 %set b $a ;#将 a 的值赋给 b
    14 =>Test Tcl
    15 %puts $b
    16 =>Test Tcl
    17 % unset a ;#释放变量
    18 %puts $a ;#试图输出未定义变量的值
    19 => can't read "a": no such variable

    2、$ & []

     1 %set foo oo
     2 =>oo
     3 %set dollar foo
     4 =>foo
     5 %set x $$dollar
     6 =>$foo ;#只解释一次,将“ $dollar”用 dollar 的值( foo)代替,
     7 ;#命令等效为 set x {$foo},大括阻止替换。
     8 % set x {$foo}
     9 =>$foo
    10 %set y $x
    11 =>$foo ; #一轮替换
    12 
    13 % set b [set a 5] ;#set a 5 命令输出的结果赋给 b
    14 =>5
    15 %puts $b    ;#方括号命令替换,expr表示进行数学计算,外围用方括号括起来
    16 =>5
    17 %set c [expr 5 * 10] ;#将乘式结果赋给 c
    18 =>50

    3、" " & { }

    双引号和花括号将多个单词组织成一个参数,也是一种替换操作。如果花括号是用做替换操作,则它会阻止内部的嵌套替换,如果花括号用做界限符,如过程定义时用做界限过程体时,不阻止替换操作,其他还有 if 条件语句、循环语句、 switch 语句和过程声明、数学表达式等。

    %set s hello
    =>hello
    %puts stdout "The length of "$s "is [string length $s]" ;# “string length” 命令是计算
    6
    Tcl 编程初步
    ;#字符串长度,用反斜杠””来引用特殊字符。
    =>The length of hello is 5
    %puts stdout {The length of $s is [string length $s]}
    =>The length of $s is [string length $s] ;#替换操作被阻止
    %set x 10
    =>10
    (bin) 35 % set y 20
    =>20
    (bin) 36 % set z [expr {$x + $y}] ;#expr 表示进行数学运算,要用[]括起来
    =>30 ;#用{}来组织算术表达式,不阻止$替换操作
    % if { $x == 10} { puts “x=$x”}
    => x=10 ;#在条件语句中, {}用来界定条件体和执行体,不阻止内部替换

    4、

    % set x 100
    =>100
    %set y "$x"
    =>100
    %set y "$x"
    =>$x ;#引用$符
    %puts "he
    llo" ;#回车换行
    =>he
    llo
    %puts "a" ;#震铃(需要在 tclsh 下运行)
    % set b [puts 
    $y ] ;#代码换行
    =>$x

    5、incr

    incr 命令根据指定的步长来增加或减少参数的值。当步长为负时,减少参数值;当步长为正
    时,增加参数值。默认步长为+1。

    %set a 10 ; incr a
    =>a=11
    %set a 10 ; incr a –1
    => a=9

    6、基本命令集

    命令                                                                                描述
    append                                                                           将值追加到字符串尾
    binary                                                                             二进制字符串操作
    format                                                                             字符串格式化
    regexp                                                                            正则表达式(用于字符串模式匹配)
    regsub                                                                             用正则表达式进行字符串模式匹配和替换
    scan                                                                                字符串分解
    string options                                                                  字符串操作和命令集
    subst                                                                             字符替代(替代特殊字符)

    • append 
      %set var1 Hello
      %set var2 World
      %append var1 $var2
      =>HelloWorld
      %puts $var1
      =>HelloWorld ;#var1 的内容被更改!
    •     format
    • ;#要取第 2 个变元值,即 5。位置说明符的格式为 2$,并用来引用符号$:
      % set res [format "%2$s" 1 5 9]
      =>5
      %puts $res
      =>5
      % set str [format "%3$s %1$s %2$s" "are" "right" "You"]
      => You are right 
    •      
       1 %format "%x" 20
       2 =>14 ;# 将 20 转换为十六进制数
       3 %format "%8x" 20
       4 => 14 ;# 将 20 转换为十六进制数,8 位数据宽度,右对齐
       5 %format "%08x" 20
       6 
       7 =>00000014 ;#与上一命令相似,但用 0 添齐
       8 %format "%-8x" 20
       9 =>14 ;#宽度 8 位,左对齐
      10 %format "%#08x" 20
      11 =>0x000014 ;#将 20 转换为十六进制数,并添加前缀”0x”,
      12 ;#总宽度为 8 为,右对齐(默认),前导空格用 0 补齐。
      13 % set c [format %c%e%c 40 30000 41 ]
      14 => ( 3.000000e+004) ;#%c 将整数转换为对应的 ASCII 字符, 4041 分别对应”(“和”)”
      15 % set num [scan Aa %c var1 ]
      16 => 1 ;#将字符串”Aa”的第一个字符”A”转换为对应整数,
      17 ;#并赋值给 var1 变量,返回成功转换个数
      18 % puts $var1
      19 => 65 ;#字符 A 对应的整数

       上例最后一个 format 格式命令中, ”%c”一个整数转换为对应 ASCII 字符输出

    • scan
    • %set num [scan "abcABC" "%c%c " var1 var2]
      => 2
      %puts "$var1 $var2"
      => 97 98
      % set num [scan "abcABC" "%c%c" ]
      => 97 98
      %puts $num
      => 97 98 ;#忘记指定输出变量的结果
      ;#格式描述说明要扫描小写的 a 到 z 区间的连续字符,用到了花括号表明是一个集合
      % scan "abcABC" {%[a-z]} res
      => 1
      % puts $res
      => abc
      % scan "ABCabc" {%[A-b]} res
      => 1
      % puts $res
      => ABCab
      % scan "ABCab" {%[^a-b]} res
      =>1 ;#匹配非 a 到 b 的字符
      % puts $res
      =>ABC
      % scan ABCab {%2[^a-b]} res
      =>1 ;#照样可以指定匹配字符数
      % puts $res
      =>AB
    • binary
    •  1 %set b [binary format "s" 25664]
       2 => @d ;#整数 25664 以十六进制表示为 6440H。 “s”为格式说明
       3 ;#符,按照由低到高字节顺序存储。
       4 % puts $b ;#数值被压缩为两个字节,输出的结果为两个压缩字节对
       5 => @d ;#应的两个字符, @的 ASCII 码为 40H, d 的 ASCII 码为 64H
       6 % binary scan $b "s" var
       7 => 1 ;#返回转换成功的次数
       8 % puts $var ;#binary scan 从二进制数 b 中将数值恢复并存入变量
       9 var
      10 => 25664
      11 % binary scan 1 c var ;#从字符 1 中恢复数值。字符 1 的 ASCII 码=31H, 31H 对应十
      12 =>1 ;#进制整数为 49
      13 % puts $var
      14 => 49
    • subst

    • % subst { a=$a sum=[expr 1 + 2]}
      => a=foo bar sum=3
      % subst { a={$a} sum={[expr 1 + 2]}}
      => a={foo bar} sum={3} ;#数据内部的花括号不阻止替换
  • 相关阅读:
    负载均衡(负载平衡)
    JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
    有趣的浏览器检测
    IE6 bug之 href= “javascript:void(0);”
    SVN使用技巧 不要把不必要的文件版本化 *.suo,*.bin,*.obj
    CacheDependency缓存依赖里面的 absoluteExpiration(绝对到期时间),弹性到期时间(slidingExpiration)
    TimeSpan 和 DateTime
    字符串数组 string[] 转换为 字符串(用逗号,作为分隔符),linq Except的用法,linq获取两个字符串数组相同的部分
    List的ToLookup 分组方法
    mysql 返回查询结果,返回out返回值,多表联合查询的分页存储过程
  • 原文地址:https://www.cnblogs.com/uiojhi/p/9522298.html
Copyright © 2011-2022 走看看