Lua 基础教程(十)字符串

139 阅读3分钟

Lua 基础教程(十)字符串

hudson 译 原文

字符串是字符以及换行、换页等控制字符构成的序列。字符串可以用如下三种形式初始化:

  1. 单引号之间的字符
  2. 双引号之间的字符
  3. 在[[和]]之间的字符

以下是上述三种形式的示例:

string1 = "Lua"
print("\"String 1 is\"",string1)

string2 = 'Tutorial'
print("String 2 is",string2)

string3 = [["Lua Tutorial"]]
print("String 3 is",string3)

运行上面的程序时,输出如下:

"String 1 is"	Lua
String 2 is	Tutorial
String 3 is	"Lua Tutorial"

在字符串中使用转义序列字符可以改变字符的正常解释。例如,要打印双引号(""),上面的示例中使用了"。转义序列及其用法如下表所示。

转义序列用途
\a响铃
\b退格
\f换页
\n换行
\r回车
\t制表符
\v垂直制表符
\反斜杠
"双引号
'单引号
[左方括号
]右方括号

字符串操作

Lua支持对字符串进行操作的方法如下:

序号方法 & 用途
1string.upper(argument)
返回参数的大写表示。
2string.lower(argument)
返回参数的小写表示。
3string.gsub(mainString,findString,replaceString)
返回用replaceString替换findString而得到的字符串。
4string.find(mainString,findString,optionalStartIndex,optionalEndIndex)
返回mainString中findString的起始索引和结束索引,如果未找到则返回nil。
5string.reverse(arg)
返回反转后字符串。
6string.format(...)
返回格式化后的字符串。
7string.char(arg) 和 string.byte(arg)
返回参数的内部数字和字符表示。
8string.len(arg)
返回arg字符串的长度。
9string.rep(string, n))
返回重复字符串n次而得到的字符串。
10..
连接两个字符串。

下面我们列举更多一些示例,确切地看看这些字符串操作函数的行为。

大小写转换

下面代码将字符串转换为大写和小写:

string1 = "Lua";

print(string.upper(string1))
print(string.lower(string1))

运行上面的程序时,将得到以下输出:

LUA
lua

替换子字符串

下面代码用另一个字符串替换一个字符串:

string = ”Lua Tutorial“

-- replacing strings
newstring = string.gsub(string,”Tutorial“,”Language“)
print(”The new string is “..newstring)
string = "Lua Tutorial"

运行上面的程序时,将得到以下输出:

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)
string = "Lua Tutorial"

运行上面的程序时,将得到以下输出:

5	12
The new string is	lairotuT auL

格式化字符串

很多时候,需要以格式化的方式打印字符串。可以使用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