辛辛苦苦写了n多的C++程序,与各种数值计算,字符串处理,算法 ,容器纠缠到头昏眼花,等到现在用到脚本的时候才发现原来编程也是可以更快乐的。
Tcl/Tk,一个被成为跨平台的Basic的东东,实际上这个比Basic可要强大和灵活多了,下面是我在编写一个物理实验数据处理系统的时候写的一段代码,可以利用模版简单的生成HTML格式的实验报告。具体方法是把HTML模版中需要填入的变量的名称以$var+数字的形式表示,然后在变量的值计算出来以后,读入模板,将变量名称替换成数值。正则表达式和expr函数在这里帮了我的大忙。
proc getIdx {x} {
if { [regexp {/$var([0-9])+} $x]==0 } { return 0 }
regexp {/$var([0-9])+} $x y
set y [string range $y 4 end]
return $y
}
while { [ gets $cin str ]>=0 } {
set lst [split $str " "]
set llen [llength $str]
for {set i 0} { $i< $llen } { incr i } {
set curstr [lindex $lst $i]
if { [string length [string trim $curstr ]]==0 } { puts stdout $curstr } else {
set tmp {$var}
set rr [getIdx $curstr ]
if {$rr==0} { puts stdout $curstr } else {
puts stdout [regsub {/$var([0-9])+} $curstr [expr [append tmp $rr]]]
}
}
}
}
Tcl/Tk,一个被成为跨平台的Basic的东东,实际上这个比Basic可要强大和灵活多了,下面是我在编写一个物理实验数据处理系统的时候写的一段代码,可以利用模版简单的生成HTML格式的实验报告。具体方法是把HTML模版中需要填入的变量的名称以$var+数字的形式表示,然后在变量的值计算出来以后,读入模板,将变量名称替换成数值。正则表达式和expr函数在这里帮了我的大忙。
proc getIdx {x} {
if { [regexp {/$var([0-9])+} $x]==0 } { return 0 }
regexp {/$var([0-9])+} $x y
set y [string range $y 4 end]
return $y
}
while { [ gets $cin str ]>=0 } {
set lst [split $str " "]
set llen [llength $str]
for {set i 0} { $i< $llen } { incr i } {
set curstr [lindex $lst $i]
if { [string length [string trim $curstr ]]==0 } { puts stdout $curstr } else {
set tmp {$var}
set rr [getIdx $curstr ]
if {$rr==0} { puts stdout $curstr } else {
puts stdout [regsub {/$var([0-9])+} $curstr [expr [append tmp $rr]]]
}
}
}
}