string 命令合集
(1) 常用的 string 命令如下表所示,其中粗體部分表示 TCL 系統命令或參數。
(2) “str1 str2 ...”、“index1 index2 ...”等,表明參數可以指定多個。
(3) 注意各個命令使用字符串變量時,格式是 **str 還是 str。一般使用 **str 時會返回新的字符串,使用 str 時不會返回新的字符串。
命令格式 | 說明 |
---|---|
string comparestr1str2 | 字符串比較,str1 大于、等于、小于時,返回值分別為 1、0、-1。 |
string equalstr1str2 | 字符串比較,嚴格相同返回 1,否則返回 0。可以指定 -nocase 選項,不區分大小寫比較。也可以指定 -length 進行定長比較。 |
string index $str index | 返回索引的字符 |
string range $str index1 index2 | 返回指定索引范圍為 index1~index2 內的字符串 |
string replace $str index1 index2 newStr | 將索引范圍為 index1~index2 的字符串替換為 newStr,如果沒有指定新字符串則完成刪除功能 |
string mapcharMapstr | 根據字典型變量 charMap 鍵值對的關系,將 str 中的字符作為鍵進行映射 |
string length $str | 返回字符串的字符長度 |
string repeat $str times | 字符串重復多次組成新的字符串變量 |
string reverse $str | 返回與字符串 str 順序相反的字符串 |
string tolower $str | 返回小寫字符 |
string toupper $str | 返回大寫字符 |
string firststr1str2 | 返回 str1 在 str2 中第一次出現的位置索引 |
string laststr1str2 | 返回 str1 在 str2 中最后一次出現的位置索引 |
string trim $str chars | 刪除字符串兩端的 chars,默認刪除空白 |
string trimleft $str chars | 刪除字符串左側開始的 chars,默認刪除空白 |
string trimright $str chars | 刪除字符串右側開始的 chars,默認是空白 |
string wordend $str index | 返回在索引位置的單詞之后的字符索引位置 |
string wordstart $str index | 返回在索引位置的單詞中第一個字符的索引位置 |
string is class $str | 判斷字符串的類型 |
string match pattern str | 字符串匹配模式,匹配成功則返回 1 |
字符串操作舉例
舉例:string compare/equal
TCL 中使用 string equal 進行字符串是否相等的比較。嚴格相等返回值為 1,否則為 0 。
可選項 -nocase 指定比較時不區分大小寫,可選項 -length 指定字符串長度進行比較。
set str_ref "abcd"
set str_comp1 "abce"
set str_comp2 "ABCd"
# 以下兩種方式不等
puts [string equal $str_ref $str_comp1]
puts [string equal $str_ref $str_comp2]
#以下兩種方式相等
puts [string equal -length 3 $str_ref $str_comp1]
puts [string equal -nocase $str_ref $str_comp2]
#% 0
#% 0
#% 1
#% 1
string compare 不僅能比較是否相等,還能比較 2 個字符串大小(按照 ASCII 字符排列)。當兩個字符串間的關系為大于、等于、小于時,返回值分別為 1、0、-1。
也可以使用 -nocase、-length 選項。
set str_ref "abcd"
set str_comp1 "abce"
set str_comp2 "ABCd"
# abcd < abce
puts [string compare $str_ref $str_comp1]
# abcd > ABCd
puts [string compare $str_ref $str_comp2]
# 以下相等
puts [string compare -length 3 $str_ref $str_comp1]
puts [string compare -nocase $str_ref $str_comp2]
#% -1
#% 1
#% 0
#% 0
舉例:string index/range
string index 用于訪問字符串中的單個字符,string range 用于訪問字符串中指定范圍內的多個字符。
set str "Forever young."
puts "3rd char: [string index $str 3]"
puts "3-6 char: [string range $str 3 6]"
#% 3rd char: e
#% 3-6 char: ever
舉例:string replace/map
string replace 可以將指定索引范圍內的字符串替換為新的字符串。
如果沒有指定新字符串則完成刪除功能。
set str "Forever young."
# 替換 young -> happy , young -> sad
puts "[string replace $str 8 end-1 "happy"]"
puts "[string replace $str 8 end-1 "sad"]"
# 刪除 young
puts "[string replace $str 8 end-1]"
#% Forever happy.
#% Forever sad.
#% Forever .
string map 根據指定字典型變量中鍵值對的關系,將相應的字符串進行映射替換。原字符串中的字符相當于字典中的鍵,新字符串替換后的值為字典中鍵對應的值。
替換時按照字典型變量中鍵出現的順序進行映射替換,剩余字符串中沒有與鍵匹配的字符,則保留原字符(串)。
set str "Forever young. Bless you."
set char_map [dict create Forever 22 \\
" " 33 \\
"young" 44 ]
puts "[string map $char_map $str]"
#% 223344.33Bless33you.
舉例:string length/repeat/reverse
string length/repeat/reverse 具有計算長度、重復字符串、反轉字符串的功能。
set str "Hello, Zhihua"
puts [string repeat $str 2]
puts [string length $str]
puts [string reverse $str]
#% Hello, ZhihuaHello, Zhihua
#% 13
#% auhihZ ,olleH
舉例:string tolower/toupper
string tolower/toupper 分別返回字符串的小寫、大寫格式。
puts [string tolower AbcD]
puts [string toupper AbcD]
#% abcd
#% ABCD
舉例:string first/last
string first **str1 **str2 startindex
string first 用于查找第一個字符串在第二個字符串中的位置,并返回第一個匹配的索引值。命令結尾還可以指定開始查找的索引,即查找范圍為 str2 索引之后的字符串。
string last **str1 **str2 endindex
string last 用于查找第一個字符串在第二個字符串中的位置,并返回最后一個匹配的索引值。命令結尾還可以指定結束查找的索引,即查找范圍為 str2 索引之前的字符串。
#index 2 7 12
set str "Abab 3cab acabb"
puts [string first ab $str]
puts [string first ab $str 5]
puts [string last ab $str]
puts [string last ab $str 10]
#% 2
#% 7
#% 12
#% 7
舉例:string trim/trimleft/trimright
string trim/trimleft/trimright $str chars
根據指定的多個字符 chars,string trim/trimleft/trimright 依次刪除字符串 $str 兩端、左側、右側的字符。只要字符串兩端、左側、右側的字符存在于指定的 chars 中,則會依次被刪除,直至遇到不存在與 chars 中的字符。
如果沒有指定 chars 選項,則默認刪除空格、制表符、換行符。
set str " abccICbcc "
# 默認刪除兩邊空格
puts [string trim $str]
# 指定 chars 時不要忘記輸入空格
puts [string trim $str "abc "]
# 默認刪除左邊空格
puts [string trimleft $str]
# 指定 chars 時沒有輸入空格,則字符串不會改變
puts [string trimleft $str "abc"]
# 默認刪除右邊空格
puts [string trimright $str]
puts [string trimright $str "bca "]
#% abccICbcc
#% IC
#% abccICbcc
#% abccICbcc
#% abccICbcc
#% abccIC
舉例:string wordend/wordstart
string wordend 返回字符串中包含索引字符的單詞的下一個單詞的首個字符的索引。
string wordstart 返回字符串中包含索引字符的單詞的首個字符的索引。
此命令下,任何連續的字符數字或者下劃線,或者除此之外的單個字符,例如空格,都被視為一個單詞。
下列示例中,變量有 3 個單詞:For_ever、空格、Young。
# index 0123456789
set str "For_ever Young"
puts [string wordend $str 2]
puts [string wordend $str 8]
puts [string wordend $str 10]
puts [string wordstart $str 2]
puts [string wordstart $str 8]
puts [string wordstart $str 10]
#% 8
#% 9
#% 14
#% 0
#% 8
#% 9
舉例:string is
string is class -strict -failIndex var $str
string is 命令用于判斷字符串的類型,如果字符串符合 TCL 中指定字符類型 ,則返回值為1 ,否則為 0。
當指定 -strict 選項時,對于所有 class 字符類型,當字符串為空時返回值為 1。如果不指定,遇到空字符串時返回值為 1 。
當指定了 -failIndex var 選項時,該命令會把第一個不符合 class 類別字符的索引保存到變量 var 中。如果返回值為1,則不進行賦值操作。但是當 class 為 boolean、ture 或 false 類型時,如果返回值為 0 ,var 會被設置為0。
這里簡單介紹下 Unicore 碼:統一碼,又稱單一碼(Unicode),它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。而大多數計算機采用 ASCII 碼是表示所有大小寫字母、數字、標點符號和控制字符的 7 位編碼方案。統一碼包含 128 個 ASCII 碼字符。
TCL 字符串系統類型 class 取值如下。
alpha | Unicore 字母 | double | 雙精度浮點型,可以包含空格 |
---|---|---|---|
alnum | Unicore 字母或數字 | list | 有效的列表結構 |
ascii | ASCII 字符 | boolean | 布爾型值 |
lower | Unicore 小寫字母 | true | 布爾型值:真 |
upper | Unicore 大寫字母 | false | 布爾型值:假 |
wordchar | 字母數字或連接符 | control | Unicore 控制字符 |
digit | Unicore 數字 | graph | 除空格外的 Unicore 打印字符 |
xdigit | 十六進制字符 | 包含空格的 Unicore 打印字符 | |
integer | 32 位整數型 | punct | Unicore 的標點符號 |
wideinteger | 64 位長整數型 | space | Unicore 的空白字符 |
現在對各種 class 類型進行舉例說明,返回值均為 1 。
string is alpha "?éα?以及漢字"
string is alnum "1234?éα?以及漢字"
string is ascii "Forever"
string is lower "forever"
string is upper "FOREVER"
string is wordchar "Stu_No3"
string is digit 1234
string is xdigit "\\x33"
string is integer 1234
string is wideinteger 1234
string is double 1e-3
string is list {Forever Young .}
string is boolean yes
string is true 1
string is false false
string is control \\n
string is graph "£±2"
string is print " £±2 "
string is punct "。\\/"
string is space " "
下面為返回值均為 0 的幾個簡單示例。
string is alpha "1234?éα?以及漢字"
string is ascii "。"
string is lower "Forever"
string is digit 123.45
string is punct " 。\\/ "
string is space "a b c"
下面是 -strict 選項的簡單示例。
string is alpha ""
string is integer ""
string is alpha -strict ""
string is integer -strict ""
#% 1
#% 1
#% 0
#% 0
下面是 -failindex 選項的簡單示例。
set str "MaryIs32."
string is alpha -failindex index $str
puts "Failed index: $index"
puts "Failed char: [string index $str $index]"
Failed index: 6
Failed char: 3
字符串匹配(string match)將在下一節說明。
-
TCL
+關注
關注
10文章
1722瀏覽量
88566 -
字符串
+關注
關注
1文章
578瀏覽量
20506 -
命令
+關注
關注
5文章
683瀏覽量
22011 -
string
+關注
關注
0文章
40瀏覽量
4732
發布評論請先 登錄
相關推薦
評論