CL:字符串命令
有一个关于TCL的哲学探讨:TCL语法中的一切是否都是字符串?(以及这是不是一件好事),但是无论你的论点如何,你都无法否认字符串在TCL语法中扮演着非常重要的角色,iRules也是一样。TCL提供了许多的字符串命令,其中的一些会在本文中提及。
- string map
- string range
- string trim
- string trimleft
- string trimright
我们将会看到这几条命令的几个具体案例,主要是因为我仍然觉得其它人在TCL文档中使用的例子实在是太少了。
string map ?-nocase? mapping string
在字符串中,替换子串是其于映射中的Key-Value对。映射是指一个key value key value ... 的列表,字符串中每一个Key的实例都会被它所对应的Value所取代。如果指定了-nocase模式,那么匹配就会执行,而不考虑大小写的差异。Key和Value都可能是一个多重字符。替换是按特定的顺序进行的,所以在列表中第一个出现的Key就会被第一个选中,依此类推。下面的一个例子是由论坛网友Hoolio提供的,有两种映射模式,用Https取代Http,并把服务器端口号去掉。
when HTTP_RESPONSE {
# Check if a response is a redirect 查看响应是不是一个重定向。
if {[HTTP::is_redirect]}{
log local0. "Original Location: [HTTP::header value Location]"
# Assume the