Tcl/Tk語言學習------拆分字符串


字符串的拆分

前言

  字符串的處理是每種語言經常會遇到的問題,tcl作為一門腳本語言自然也不例外,關於字符串的拆分,一般會有兩種情況:1.使用單個字符拆分,2.使用字符串拆分。

1.使用單個字符拆分字符串

  

 

  如圖所示,使用單個字符可以輕松地分割字符串。

2.使用字符串拆分字符串

  

  當我們使用字符串拆分字符串,tcl會使用字符串中的每個字符來拆分,無法達到我們的目的。

  這時我們可以定義一個快捷的方法來使用字符串拆分字符串,如下是我新建的一個split.tcl文件的內容:

1 proc OnePiece {str sep} {
2     split [string map [list $sep \0] $str ] \0
3 }
4 set a {RookieSky}
5 set b {ok}
6 set c [OnePiece $a $b]
7 puts $c

  接下來我們執行一下這個文件:

  

  從結果中我們可以看出,我們已經成功地使用字符串‘ok’來拆分‘RookieSky’

  NICE!!!

原理

  1.split string ?splitChars?

  根據splitChars變元中的字符分解string,返回一個列表。每個列表元素由string中在splitChars字符之間的字符組成,如果string含有兩個連續的字符與splitChars中的字符相同或者第一或最后一個字符為splitChars中的字符就返回一個空列表元素,如果splitChars是一個空字符串那么string的每一個字符作為單獨的元素組成列表,缺省splitChars為空格符。

  2.list ?value value …?

  這個命令生成一個list,元素就是所有的value,TCL中list是由一組元素組成的有序集合,list可以嵌套定義,list的每個元素可以是任意字符串,也可以是list。

  3.string map ?-nocase? charMap str

  返回根據 charMap 中輸入、輸出列表將 str 中的字符進行映射后而產生的新字符串,charMap這個列表中的值我們可以看成{key value key value ...}的映射,str中已經映射過的字符串不會重復映射。

  由此我們可以理解為我們寫的方法是將用來拆分的字符串和\0形成一個映射替換后,使用\0來進行拆分。

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM