6.3 字串函式
lua提供的字串函式既可以物件導向的形式呼叫,同時也可以使用庫函式呼叫的形式。
> test="這是乙個字串"
> print(string.len(test))
14> print(test:len())
14函式 描述 例子
string.len(s) 接收乙個字串並返回其長度,空字串」」的長度是0。 > print(string.len("monkey"))
6 string.lower(s) 接收乙個字串並返回乙份拷貝,當中所有大寫字母被轉換成小寫。 > test="hello world"
> print(string.lower(test))
hello world
string.rep(s,n) 返回乙個字串,由連續n個的字串s組成 > print(string.rep("hello",3))
hellohellohello
string.reverse(s) 將s逆序之後返回 > print(string.reverse("hello"))
olleh
string.sub(s,i[,j]) 返回s的乙個子串,下標從i開始直到j(lua中字串的下標位置起始值為1),如果沒有j,則擷取到字串的尾部。i和j都可以是負數,如果是負數,則表示從尾部向頭部計算座標(最後乙個字元的下標是-1,以此類推) > print(string.sub("hello",3,5))
llo> print(string.sub("hello",2))
ello
> print(string.sub("hello",-5,-3))
hel
string.upper(s) 接收乙個字串並返回乙個副本,當中所有小寫字母都被轉換成大寫字母。 > print(string.upper("hello world"))
hello world
6.4 格式化新字串
string.format(格式化字串,…)函式會根據所定義的格式化字串,格式化參數列中的引數。
string.format()函式用來格式化任意多個引數,並且基於格式化字串進行輸出。乙個格式化字串可以包含普通的字母字元和特殊的轉換**:
l %c——取乙個數字引數然後用對應ascii碼的字元代替這個位置。
l %d,%i——取乙個數字引數,將其格式化為乙個帶符號整數。
l %o——取乙個數字引數,將其格式化為八進位制數。
l %u——取乙個數字引數並將其格式化為無符號整數
l %x——取乙個數字引數並將其格式化為十進位制數,使用小寫字母。
l %x——取乙個數字引數並將其格式化為十六進製制數,使用大寫字母。
l %e——取乙個數字引數並使用科學計數法進行格式化,其中的e使用小寫字母。
l %e——取乙個數字引數並使用科學計數法進行格式化,其中的e使用大寫字母。
l %f——取乙個數字引數並將其格式化為浮點數。
l %g,%g——取乙個數字,按照較短原則轉換成%e或%f,如果你使用%g,則會轉換為%e或%f。
l %q——格式化乙個字串,使得它可以安全地被lua直譯器讀取。
l %s——接收乙個字串,並且按照給定的選項進行格式化。
在百分號和指示符之間可以有幾個選項,下面按它們出現的順序排列:
l 乙個正號的指定(+)會使乙個數字輸出時總帶有這個符號,而預設情況下,正數不顯示正號,而負數才會顯示負號。
l 乙個填充字元(空格或者是0)可以在乙個指定寬度的輸出中填充多餘的空位,在預設情況下,這個填充是空格——只在指定了輸出寬度的情況下才有填充,無論是預設的情況,還是你指定填充字元的情況都是如此。
l 乙個減號(-)表示輸出進行左對齊,預設情況下是右對齊。
l %5.3d是指返回的字串是整數,最少應該占有3個字元的寬度,如果少於這個寬度則在左邊用0填充。
l %5.3f是指返回的字串是小數,保留3位小數。如果少於這個寬度則在右邊用0填充。
命令 結果
print(string.format(「%c",83)) s
(默然說話:%c表示以字元的形式顯示後面那個數字,而大寫s的ascii編碼就是83)
print(string.format("%+d",17.0)) +17
(默然說話:%d表示以整數的方式來顯示後面那個數字,+號表示在後面的那個數字為正數時顯示正號)
print(string.format("%05d",17.0)) 00017
(默然說話:%d表示以整數的方式來顯示後面那個數字,5表示後面那個數字的顯示要占用5個字元的位置,0表示如果有多餘的位置用0進行填充。)
print(string.format("%o",17.0)) 21
(默然說話:%o表示以八進位制的方式來顯示後面那個數字)
print(string.format("%u",17.5)) 17
(默然說話:%u表示以無符號整數的方式來顯示後面那個數字)
print(string.format("%x",15.5)) f
print(string.format("%x",15.5)) f
另外,在前所提到的各種字元的集合,如%p、%s等都可以寫成大寫字母的形式,但是它們所代表的意思是小寫字母的補集,如%p就是任何的非括號字元,%s就是任意的非空白字元等等。
6.5.2模式選項
前面定義的所有元字元,還可以加上一些選項,用來表示這個元字元是用來匹配乙個字元位置還是用來匹配多個字元位置,以及是匹配更可能多的字元,還是匹配更可能少的字元。
類別 描述
單個元字元 任意該元字元所匹配的乙個字元位置
單個元字元,後接* 0個或多個字元位置。匹配盡可能長的序列
單個元字元,後接+ 1個或多個字元位置。匹配盡可能長的序列
單個元字元,後接- 0個或多個字元位置,匹配盡可能短的序列
單個元字元,後接? 0個或1個字元位置。
%n n可以是1-9之間的數字,表示第n個可匹配的子串
%bxy,x和y為不同的字元 以x開頭,y結尾的字串。
6.5.3模式捕獲
(默然說話:上面的幾張表一定看得大家都暈了吧?沒關係,我也一樣暈,這幾張表其實就象字典一樣,這裡先大概看看,了解一下內容,後面在具體應用時大家再對照這幾張表就可以了。)
捕獲的意思就是正規表示式找到了匹配小括號內的項。當捕獲成功之後,這些**獲的項就可以被儲存下來備用。
6.5.4模式開始和結束
在模式的開頭使用^表示匹配的開頭,在模式的結尾使用$來表示匹配的結束。
6.5.5模式的例子
類別 描述
1到多個非空字元, %s+
以myaddon:開頭的字串 ^myaddon:(.+)
匹配1到多位的數字,這個數字可以有小數點,也可以沒有 (%d+%.?%d*)
匹配乙個賦值語句, (%w+)=(%s+)
單個元字元,後接? 1個字元位置。
%n n可以是1-9之間的數字,表示第n個可匹配的子串
%bxy,x和y為不同的字元 以x開頭,y結尾的字串。
6.9 小結
lua有3個主要的輔助函式庫。表庫提供了對陣列表進行插入、移除和排序的方法。字串有一些有用的方法來完成諸如將字串轉成小寫、大寫或者反置的工作。除此之外,本章還介紹了lua的正規表示式。
魔獸世界程式設計寶典讀書筆記 1
第1章關於魔獸世界的程式設計 1.1定製使用者介面 魔獸世界的遊戲客戶端包括兩個部分 遊戲世界和使用者介面。遊戲世界是乙個三維世界,這些元素在指令碼語言的介面中是不容易訪問並且不能改變的。使用者介面由遊戲客戶端的其他元素組成,包括了動態按鈕 單位窗體 地圖和選項視窗。作者們可以通過編寫外掛程式來新增...
魔獸世界 法師
代刷stsm巨集 showtooltip nopet 召喚水元素 pet 冰凍術 cast nopet 召喚水元素 pet 冰凍術 stopmacro nopet petstay petpassive 奧法天賦 奧法輸出巨集 火法輸出巨集 奧法輸出天賦設定 pve 職業輸出通略 80 奧法精華帖 附...
魔獸世界 裝備
在上次編寫的基礎上自己編寫 include include include include using namespace std define warrior num 5 class cheadquarter class cwarrior class cheadquarter cwarrior c...