2016年1月24日 星期日

Lua: String

之前有提到在做一些自訂或別人定義的protocol時會常需要使用string來組一些binary資料,因此string的各種操作就顯示蠻重要的

-----
string.byte  字串轉為byte array table
print(string.byte("abcde"))  --> 97
print(string.byte("abcde", 3))  --> 99 也就是 'c'
print(string.byte("abced", 2, 4))  --> 98 99 101


------
string.char()  --> 這是最重要,目前最常用的

string.char(0, 65)
--> 得到的一個string,由binary的0, 65組成 (注意是10進制的!)

------
string.len(str)  取得字串長度

------
string.rep( s, n )  也是個方便常用的東西,測試要填重複資料時蠻好用的
print(string.rep("123_", 4))
--> 結果 123_123_123_123_

------
string.sub( s, i [, j] )

print(string.sub("abcde", 3, 4))
-->結果為 cd


------
string.upper(str)  / string.lower(str)
即全變大寫 / 小寫

---------
string.find( s, pattern [, init [, plain], ] )
--> pattern 的表示方式應該蠻重要的,晚一點再多寫點範例

print(string.find("abc_123", "abc"))  --> 1 3   回傳找到字串的起始index、結束index
print(string.find("abc_123", "abc", 3)) --> nil   從index=3開始找,找不到就回傳 nil

--------
string.format( formatstring [, ...] )

print(string.format('%d, %x, %X, %.4f', 10, 10, 10, 10/3))
--> 10, a, A, 3.3333

-------
string.match( s, pattern [, init] )    在s中找pattern是否在,若有就回傳些相符的string

print(string.match('time is 2015/10/3 12:15:30', '%d+/%d+/%d'))
--> 得到 2015/10/3

-------
string.gmatch( s, pattern )   疊代回傳所有相符的string
還不是很會用,先寫個範例
str = "it a big apple"
for item in string.gmatch(str, '%a+') do
    print(item)
end
--[[回傳結果
it
a
big
apple
]]






沒有留言:

張貼留言