檔案﹑字串﹑串列﹑陣列
本單元以一個問題為例, 介紹 Tcl/Tk
中常用的資料結構. 請參考問
寫程式時可能遇到的
big-5 碼問題 及範例程式
b5tm.
-
檔案 (file) 常用命令摘要
- pwd 目前工作目錄是?
- cd 更換目前工作目錄.
- open 開啟檔案. (參數為檔案名稱; 傳回 file id, 或稱
channel)
- close 關閉檔案. (參數為 file id/channel)
- gets 讀一列.
- read 讀多少 bytes.
- puts 寫一列.
- eof 測試是否讀/寫到最後了.
- flush 清除 buffer 內的東西.
- file 切割檔名 (完全不考慮檔案是否存在) 的選項: dirname
目錄, tail (不含目錄的) 檔名, extension 附檔名, rootname
主檔名.
- file 不開啟檔案, 直接查詢檔案狀態的選項: 一大堆,
可查檔案究竟是目錄/socket/捷徑/... 還是一般檔案; 大小,
修改日期, 讀寫執行權限, 擁有人...
- glob 找出名稱符合某個 "樣版" 的所有檔案. 有 ? * [ ] { } \
等特殊字元.
-
字串 (string) 常用命令摘要
- string length 字串的長度.
- string compare 比較字串.
- string first 到第二個字串裡面去找第一個字串,
看看在那個位置找到. (從左邊找起)
- string last 到第二個字串裡面去找第一個字串,
看看在那個位置找到. (從右邊找起)
- string index 取出字串的第幾個字元.
- string range 取出字串的子字串.
- string tolower 轉成小寫.
- string toupper 轉成大寫.
- string trim 刪除兩邊的空格.
- string match 以 glob 方式檢查字串是否符合某個 "樣版"
- regexp 以 regular
expression 方式檢查字串是否符合某個 "樣版".
- regsub 以 regular
expression 方式把字串當中符合某個 "樣版"
的子字串代換掉.
- format 用以產生複雜的字串 (例如用於準備給 eval
當參數的字串)
- 串列 (list) 其實還是字串, 只不過是 Tcl/Tk 有很多命令特別認得
"以空格分開的字串" 而已.
-
串列 (list) 相關命令摘要
- llength 串列有幾個元素?
- lindex 取得串列的第 n 個元素.
- lrange 取得串列的第 m 個元素到第 n 個元素
(成為另外一個串列).
- concat 把數個串列串成更長的一串列.
- list 把數個元素組合成一個串列.
- join 把串列內的元素用指定的字串 "黏起來" 成為一個字串.
- split 把一個字串拆成一個串列 (根據指定的字元分割)
- lsearch 串列中的第幾個元素長得像這樣? 有三種比對方式.
- lsort 排序 (可根據數字或字串順序,
可從小到大或從大到小)
- linsert 在指定的位置插入新的元素.
- lreplace 把指定位置的元素代換掉.
- lappend 在原來的串列後面接上新的元素. 注意: 只有 lappend 是
destructive (會改變原來的串列), 其他都是 non-destructive
(傳回新的串列).
-
陣列 (array) 相關命令摘要
- array size 陣列有幾個元素?
- array names
把指定陣列的所有註標放到一個串列裡面傳回值來.
- array exists 這個陣列裡面有這個註標嗎?