扫码一下
查看教程更方便
字符串是字符序列以及换页等控制字符。 字符串可以用三种形式初始化,包括
上述三种形式的示例如下所示。
string1 = "Lua" print("\"String 1 is\"",string1) string2 = 'jiyik.com' print("String 2 is",string2) string3 = [["Lua 教程"]] print("String 3 is",string3)
上述代码的运行结果如下
"String 1 is" Lua
String 2 is jiyik.com
String 3 is "Lua Tutorial"
在字符串中使用转义序列字符来改变字符的正常解释。 例如,要打印双引号 ("")
,我们在上面的示例中使用了 \"
。转义序列及其用法在下表中列出。
转义字符 | 意义 | 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 替换次数(可以忽略,则全部替换) |
4 | string.find(mainString,findString, optionalStartIndex,optionalEndIndex) | 返回主字符串中 findString 的开始索引和结束索引,如果没有找到则返回 nil。 |
5 | string.reverse(arg) | 通过反转传递的字符串的字符来返回一个字符串。 |
6 | string.format(...) | 返回一个格式化的字符串。 |
7 | string.char(arg) and string.byte(arg) | 返回输入参数的内部数字和字符表示。 |
8 | string.len(arg) | 返回传递的字符串的长度。 |
9 | string.rep(string, n)) | 通过重复相同的字符串 n 次来返回一个字符串。 |
10 | .. | 链接两个字符串 |
现在,让我们深入研究几个示例,以准确了解这些字符串操作函数的行为方式。
下面给出了将字符串操作为大写和小写的示例代码。
string1 = "Lua"; print(string.upper(string1)) print(string.lower(string1))
上面代码运行结果如下
LUA
lua
下面给出了用另一个字符串替换出现的一个字符串的示例代码。
string = "Lua Tutorial" -- 替换字符串 newstring = string.gsub(string,"Tutorial","Language") print("新的字符串为 "..newstring)
上述代码运行结果如下
新的字符串为 Lua Language
下面给出了查找子字符串索引和反转字符串的示例代码。
string = "Lua Tutorial" print(string.find(string,"Tutorial")) reversedString = string.reverse(string) print("新的字符串为 ",reversedString)
上述代码运行结果如下
5 12
新字符串为 lairotuT auL
在我们的编程中很多时候,我们可能需要以格式化的方式打印字符串。 我们可以使用 string.format
函数来格式化输出,如下所示。
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))
字符和字节表示的示例代码,用于将字符串从字符串转换为内部表示,反之亦然。
-- 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" -- 字符串连接使用 .. print("链接之后的字符串",string1..string2) -- 字符串长度 print("string1 的长度是 ",string.len(string1)) -- 重复字符串 repeatedString = string.rep(string1,3) print(repeatedString)
上述代码运行结果如下
链接之后的字符串 LuaTutorial
string1 的长度是 3
LuaLuaLua