字串是由一系列字元以及控制字元組成,如換頁符。 字串可以用三種形式初始化,包括 -
[[
和]]
之間的字元以下示出了上述三種形式的範例。
string1 = "Lua"
print(""String 1 is"",string1)
string2 = 'Yiibai Tutorial'
print("String 2 is",string2)
string3 = [["Lua Tutorial"]]
print("String 3 is",string3)
當執行上面的程式時,將得到以下輸出 -
"String 1" is Lua
String 2 is Yiibai Tutorial
String 3 is "Lua Tutorial"
字串中使用跳脫序列字元來更改字元的正常解釋。例如,要列印雙引號(""
),在上面的範例中使用了"
。跳脫序列及其用法列在下表中。
跳脫序列 | 用法 |
---|---|
\a |
鈴 |
\b |
退格 |
\f |
換頁 |
\n |
新行 |
\r |
回車 |
\t |
製表符 |
\v |
垂直製表符 |
\\ |
反斜槓 |
" |
雙引號 |
' |
單引號 |
\[ |
左方括號 |
\] |
右方括號 |
Lua支援字串來操作字串 -
編號 | 方法 | 作用 |
---|---|---|
1 | string.upper(argument) |
返回引數的大寫表示。 |
2 | string.lower(argument) |
返回引數的小寫表示。 |
3 | string.gsub(mainString,findString,replaceString) |
返回用replaceString 替換findString 後字串。 |
4 | string.find(mainString,findString, optionalStartIndex,optionalEndIndex) |
返回mainString 中findString 的起始索引和結束索引找到字串,如果未找到則返回nil 。 |
5 | string.reverse(arg) |
將傳遞的字串arg 反轉後的字串。 |
6 | string.format(...) |
返回格式化字串。 |
7 | string.char(arg) 和 string.byte(arg) |
返回輸入引數的內部數位和字元表示。 |
8 | string.len(arg) |
返回傳遞字串arg 的長度。 |
9 | string.rep(string, n)) |
通過重複相同的字串n 次返回一個字串。 |
10 | .. |
此運算子連線兩個字串。 |
現在,來深入了解一些範例,以準確了解這些字串操作函式的行為方式。
下面給出了用於將字串轉換為大寫和小寫的範例程式碼。
string = "Lua Tutorial"
-- replacing strings
newstring = string.gsub(string,"Tutorial","Language")
print("The new string is "..newstring)
當執行上面的程式時,將得到以下輸出 -
The new string is Lua Language
下面給出了用於查詢子串索引和反轉字串的範例程式碼。
string = "Lua Tutorial"
-- replacing strings
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("The new string is",reversedString)
當執行上面的程式時,將得到以下輸出 -
5 12
The new string is lairotuT auL
在Lua程式設計中,有時需要以格式化的方式列印字串。 那麼可使用string.format
函式格式化輸出,如下所示。
string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
-- Basic string formatting
print(string.format("Basic formatting %s %s",string1,string2))
-- Date formatting
date = 2; month = 1; year = 2014
print(string.format("Date formatting %02d/%02d/%03d", date, month, year))
-- Decimal formatting
print(string.format("%.4f",1/3))
當執行上面的程式時,將得到以下輸出 -
Basic formatting Lua Tutorial
Date formatting 02/01/2014
0.3333
字元和位元組表示的範例程式碼,用於將字串從字串轉換為內部表示,反之亦然。
-- Byte conversion
-- First character
print(string.byte("Lua"))
-- Third character
print(string.byte("Lua",3))
-- first character from last
print(string.byte("Lua",-1))
-- Second character
print(string.byte("Lua",2))
-- Second character from last
print(string.byte("Lua",-2))
-- Internal Numeric ASCII Conversion
print(string.char(97))
當執行上面的程式時,將得到以下輸出 -
76
97
97
117
117
a
常見的字串操作包括字串連線,查詢字串的長度以及有時多次重複相同的字串。 下面給出了這些操作的範例。
string1 = "Lua"
string2 = "Tutorial"
-- String Concatenations using ..
print("Concatenated string",string1..string2)
-- Length of string
print("Length of string1 is ",string.len(string1))
-- Repeating strings
repeatedString = string.rep(string1,3)
print(repeatedString)
當執行上面的程式時,將得到以下輸出 -
Concatenated string LuaTutorial
Length of string1 is 3
LuaLuaLua