在數(shù)據(jù)處理的時候,查閱了一些常用的autoLisp函數(shù),如下表:
| 函數(shù) | 函數(shù)功能 | 說明 |
|---|---|---|
(ASCII string) |
將字符串中的第一個字符轉換成其ASCII碼后返回。 | 參數(shù)"string"為一個字符串。函數(shù)返回值為整數(shù)。 |
(chr int) |
將代表字符ASCII碼的整數(shù)轉換成包含相應的單一字符的字符串。 | 參數(shù)"int"必須是整型且取值在 1-255 范圍內。 |
(strlen [string]...) |
以整數(shù)形式返回一個字符串中字符的個數(shù)。 | 參數(shù)"string"為一個字符串。如果指定多個"string",函數(shù)返回所有參數(shù)的總長度。如果省略或輸入空字符串,函數(shù)返回0。 |
(strcat [string [string]...]) |
將多個字符串拼接成一個長字符串后返回。 | 參數(shù)"string"為一個字符串。如果未提供參數(shù),函數(shù)返回空字符串。 |
(substr string start [length]) |
返回字符串中的一個子字符串。 | 參數(shù)"string"為一個字符串,"start"為正整數(shù),指定"string"中的開始位置(字符串中的第一個字符的位置為1)。"length"也為正整數(shù),指定在"string"中進行搜索的字符的長度。如果未指定該參數(shù),則子字符串延續(xù)到"string"的結尾。 |
(strcase string [which]) |
將字符串中的所有字母轉換成大寫或小寫后返回。 | 參數(shù)"string"為一個字符串,如果提供"which"且其值不為nil,"string"中的所有字符將被轉換成小寫,否則將字符轉換為大寫。 |
(read [string]) |
返回字符串中的第一個表或第一個原子。 | 參數(shù)"string"為一個字符串。如果未指定參數(shù),函數(shù)返回nil。如果字符串中包含由空格、換行符、制表符或括號等分隔符分開的多個詞,則只返回其中的第一個詞。 |
(wcmatch string pattern) |
將模式字符串與某指定的字符串進行匹配比較。 | 參數(shù)"string"為要比較的字符串,"pattern"為模式字符串,可以包含表1中所列的通配符。在多個模式條件之間用逗號分隔。如果"string"和"pattern"匹配,函數(shù)返回 T,否則返回nil。 |
表1
| 字符 | 說明 |
|---|---|
# |
對比單一的數(shù)字 |
@ |
對比任何單一的字母字符 |
.(句號) |
對比任何單 一 的非字母字符 |
*(星號) |
對比任何字符列表, 包含空字符。 而其可使用在搜索格式的任何位置, 如開頭、中間或結尾。 |
? |
對比任何單一的字符 |
~ |
如果它為格式中的第一個字符, 則其將對比除該格式以外的任何符號 |
[...] |
對比括號中的任何一個字符 |
[~...] |
對比不在括號內,表示單一字符的范闈 |
- |
用在中括號內, 表示單一字符的范闈 |
,(逗號) |
分隔兩種格式 |
'(反單引號) |
跳脫特殊字母(依照順序讀取下個字符) |
一般的,一行有多個數(shù)據(jù),中間用分隔符隔開。但是我沒有找到有關分割字符串的函數(shù),于是決定自己寫一個。代碼如下。
; user defined function strsplit.
; strsplit splits a string with delimiter, and return a list.
; example: (strsplit "1,22,333,4444" ",") -->> ("1","22","333","4444")
; (strsplit ",1,22,333,4444," ",") -->> ("" "1" "22" "333" "4444" "")
(defun strsplit(datastr delimiter)
(setq strlist '()
str ""
)
(setq n (strlen datastr))
(setq i 1)
(repeat n
; s is a single letter, starts from the first to the end.
(setq s (substr datastr i 1))
;
(if (/= s delimiter)
; when s is't a delimiter
(progn
(setq str (strcat str s))
; if s is the last letter
(if (= i n)
(setq strlist (cons str strlist))
)
)
; when s is a delimiter
(progn
(setq strlist (cons str strlist))
(setq str "")
; if delimiter is the last letter
(if (= i n)
(setq strlist (cons "" strlist))
)
)
)
(setq i (1+ i))
)
; reverse list and retrun it
(reverse strlist)
)