Latest web development tutorials

Lua 字符串

字符串或串(String)是由數字、字母、下劃線組成的一串字符。

Lua 語言中字符串可以使用以下三種方式來表示:

  • 單引號間的一串字符。
  • 雙引號間的一串字符。
  • [[和]]間的一串字符。

以上三種方式的字符串實例如下:

string1 = "Lua"
print("\"字符串 1 是\"",string1)
string2 = 'w3cschool.cc'
print("字符串 2 是",string2)

string3 = [["Lua 教程"]]
print("字符串 3 是",string3)

以上代碼執行輸出結果為:

"字符串 1 是"	Lua
字符串 2 是	w3cschool.cc
字符串 3 是	"Lua 教程"

轉義字符用於表示不能直接顯示的字符,比如後退鍵,回車鍵,等。 如在字符串轉換雙引號可以使用"\""。

所有的轉義字符和所對應的意義:

轉義字符
意義
ASCII碼值(十進制)
\a
響鈴(BEL)
007
\b
退格(BS) ,將當前位置移到前一列
008
\f
換頁(FF),將當前位置移到下頁開頭
012
\n
換行(LF) ,將當前位置移到下一行開頭
010
\r
回車(CR) ,將當前位置移到本行開頭
013
\t
水平製表(HT) (跳到下一個TAB位置)
009
\v
垂直製表(VT)
011
\\
代表一個反斜線字符''\'
092
\'
代表一個單引號(撇號)字符
039
\"
代表一個雙引號字符
034
\0
空字符(NULL)
000
\ddd
1到3位八進制數所代表的任意字符
三位八進制
\xhh
1到2位十六進制所代表的任意字符
二位十六進制

字符串操作

Lua 提供了很多的方法來支持字符串的操作:

序號 方法& 用途
1 string.upper(argument):
字符串全部轉為大寫字母。
2 string.lower(argument):
字符串全部轉為小寫字母。
3 string.gsub(mainString,findString,replaceString,num)
在字符串中替換,mainString為要替換的字符串, findString 為被替換的字符,replaceString 要替換的字符,num 替換次數(可以忽略,則全部替換),如:
> string.gsub("aaaa","a","z",3);
zzza	3
4 string.strfind (str, substr, [init, [end]])
在一個指定的目標字符串中搜索指定的內容(第三個參數為索引),返回其具體位置。 不存在則返回nil。
> string.find("Hello Lua user", "Lua", 1) 
7	9
5 string.reverse(arg)
字符串反轉
> string.reverse("Lua")
auL
6 string.format(...)
返回一個類似printf的格式化字符串
> string.format("the value is:%d",4)
the value is:4
7 string.char(arg)和string.byte(arg[,int])
char 將整型數字轉成字符並連接, byte 轉換字符為整數值(可以指定某個字符,默認第一個字符)。
> string.char(97,98,99,100)
abcd
> string.byte("ABCD",4)
68
> string.byte("ABCD")
65
>
8 string.len(arg)
計算字符串長度。
string.len("abc")
3
9 string.rep(string, n))
返回字符串string的n個拷貝
> string.rep("abcd",2)
abcdabcd
10 ..
鏈接兩個字符串
> print("www.w3cschool".."cc")
www.w3cschoolcc

字符串大小寫轉換

以下實例演示瞭如何對字符串大小寫進行轉換:

string1 = "Lua";
print(string.upper(string1))
print(string.lower(string1))

以上代碼執行結果為:

LUA
lua

字符串查找與反轉

以下實例演示瞭如何對字符串進行查找與反轉操作:

string = "Lua Tutorial"
-- 查找字符串
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("新字符串为",reversedString)

以上代碼執行結果為:

5	12
新字符串为	lairotuT auL

字符串格式化

以下實例演示瞭如何對字符串進行格式化操作:

string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
-- 基本字符串格式化
print(string.format("基本格式化 %s %s",string1,string2))
-- 日期格式化
date = 2; month = 1; year = 2014
print(string.format("日期格式化 %02d/%02d/%03d", date, month, year))
-- 十进制格式化
print(string.format("%.4f",1/3))

以上代碼執行結果為:

基本格式化 Lua Tutorial
日期格式化 02/01/2014
0.3333

字符與整數相互轉換

以下實例演示了字符與整數相互轉換:

-- 字符转换
-- 转换第一个字符
print(string.byte("Lua"))
-- 转换第三个字符
print(string.byte("Lua",3))
-- 转换末尾第一个字符
print(string.byte("Lua",-1))
-- 第二个字符
print(string.byte("Lua",2))
-- 转换末尾第二个字符
print(string.byte("Lua",-2))

-- 整数 ASCII 码转换为字符
print(string.char(97))

以上代碼執行結果為:

76
97
97
117
117
a

其他常用函數

以下實例演示了其他字符串操作,如計算字符串長度,字符串連接,字符串複製等:

string1 = "www."
string2 = "w3cschool"
string3 = ".cc"
-- 使用 .. 进行字符串连接
print("连接字符串",string1..string2..string3)

-- 字符串长度
print("字符串长度 ",string.len(string2))

-- 字符串复制 2 次
repeatedString = string.rep(string2,2)
print(repeatedString)

以上代碼執行結果為:

连接字符串	www.w3cschool.cc
字符串长度 	9
w3cschoolw3cschool