教程 > Lua 教程 > Lua 基础 阅读:100

Lua 字符串

字符串是字符序列以及换页等控制字符。 字符串可以用三种形式初始化,包括

  • 单引号间的一串字符。
  • 双引号间的一串字符。
  • [[]] 间的一串字符。

上述三种形式的示例如下所示。

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

查看笔记

扫码一下
查看教程更方便