string.byte(s,i,j)
功能:回傳從i到j的字元所對應的數值(ASCII值)。
說明:i預設為1,j預設為i的值。
中文字也可以得到相對的值。
範例:words = 'abcd123測試中!!'
print (string.byte(words,3))
回傳變數words裡第3個字元"c"的ASCII值:99
print (string.byte(words,3,4))
回傳變數words裡第3到4個字元"cd"的ASCII值:99 100
print (words:byte(2,5))
回傳變數words裡第2到5個字元"bcd1"的ASCII值:98 99 100 49
這個語法等同於print (string.byte(words,2,5)),冒號在Lua裡可以把右邊的值傳
遞給左邊的函數;類似的寫法可以在Mushclient的抓聊天訊息到新視窗的Plugin裡看
到。
a,b,c = words:byte(2,3)
print (a,b,c)
回傳變數words裡第2到3個字元"bc"的ASCII值:98 99 nil
這裡先把得到的值傳到a,b,c裡,再用print去顯示。當函數回傳的值不只一個,但希
望只得到其中一個值,可以這麼寫。但一般會如此寫:
_,b,_ = words:byte(2,3)
把不需要的值傳回變數_。
如果設定的變數名超過回傳的值數目,沒賦值的變數會顯示nil;反之,多餘的回傳值
會被捨棄。
print (string.byte(words,8,9))
回傳變數words裡第8到9個字元"測"的ASCII值:180 250
'測'是由兩個字元組成的,所以要設頭尾以得到兩個值。