第三章 Lua字符串

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文檔


前言

字符串用於表示文本。Lua語言中的字符串既可以表示單個字符,也可以表示一整本書籍°。在 Lua語言中,操作100K或者1M個字母組成的字符串的程序也很常見。 Lua語言中的字符串是一串字節組成的序列,Lua核心並不關心這些字節究竟以何種方式編碼文本。在Lua語言中,字符使用8個比特位來存儲( eight-bit clean)。Lua語言中的字符串可以存儲包括空字符在內的所有數值代碼,這意味着我們可以在字符串中存儲任意的二進制數據。同樣,我們可以使用任意一種編碼方法(UTF-8、UTF-16等)來存儲Unicode字符串;不過,像我們接下來很快要討論的那樣,最好在一切可能的情況下優先使用UTF-8編碼。Lua的字符串標準庫默認處理8個比特位(1Byte)的字符,但是也同樣可以非常優雅地處理UTF-8字符串。此外,從 Lua 5.3開始還提供了一個幫助使用UTF-8編碼的函數庫。 Lua語言中的字符串是不可變值( immutable value )。我們不能像在C語言中那樣直接改變某個字符串中的某個字符,但是我們可以通過創建一個新字符串的方式來達到修改的目的,例如:

一、字符串

Lua語言中的字符串是不可變值( immutable value)。我們不能像在C語言中那樣直接改變某個字符串中的某個字符,但是我們可以通過創建一個新字符串的方式來達到修改的目的,例如:
在這裏插入圖片描述在這裏插入圖片描述

在這裏插入圖片描述
該操作符返回字符串佔用的字節數,在某些編碼中,這個值可能與字符串中字符的個數不同。
我們可以使用連接操作符…(兩個點)來進行字符串連接。如果操作數中存在數值,那麼Lua語言會先把數值轉換成字符串:

在這裏插入圖片描述
在某些語言中,字符串連接使用的是加號,但實際上3+5和3…5是不一樣的。應該注意,在Lua語言中,字符串是不可變量。字符串連接總是創建一個新字符串,而不會改變原來作爲操作數的字符串:
在這裏插入圖片描述

字符串常量

在這裏插入圖片描述

長字符串

在這裏插入圖片描述

強制類型轉換

Lua語言在運行時提供了數值與字符串之間的自動轉換( conversion)。針對字符串的所有算術操作會嘗試將字符串轉換爲數值。Lua語言不僅僅在算術操作時進行這種強制類型轉換( coercion),還會在任何需要數值的情況下進行,例如函數math.sin的參數。相反,當Lua語言發現在需要字符串的地方出現了數值時,它就會把數值轉換爲字符串:
在這裏插入圖片描述
任何有字符串參與的數學運算,字符串都會被轉換爲浮點數

在這裏插入圖片描述
如果需要顯式地將一個字符串轉換成數值,那麼可以使用函數tonumber。當這個字符串的內容不能表示爲有效數字時該函數返回nil;否則,該函數就按照Lua語法掃描器的規則返回對應的整型值或浮點類型值:
在這裏插入圖片描述
在這裏插入圖片描述
調用函數tostring可以將數值轉換成字符串:
在這裏插入圖片描述

字符串標準庫

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述