七、Lua字符串
文章目录
- 一、字符串
- (一)单引号间的一串字符
- (二)local str = "Hello, "
- (三)[[ 与 ]] 间的一串字符
- (四)例子
- 二、字符串长度计算
- (一)string.len
- (二)包含中文的字符串使用 utf8.len函数:
- (三)转义字符
- 三、字符串操作
- 四、字符串截取
- 五、字符串大小写转换
- 六、字符串查找与反转
一、字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符。
在 Lua 中,字符串是一种基本的数据类型,用于存储文本数据。
Lua 中的字符串可以包含任意字符,包括字母、数字、符号、空格以及其他特殊字符。
Lua 语言中字符串可以使用以下三种方式来表示:
(一)单引号间的一串字符
local str1 = 'This is a string.'
local str2 = "This is also a string."
(二)local str = "Hello, "
str = str .. "World!" -- 创建一个新的字符串并将其赋值给str
print(str) -- 输出 "Hello, World!"
(三)[[ 与 ]] 间的一串字符
local multilineString = [[
This is a multiline string.
It can contain multiple lines of text.
No need for escape characters.
]]
print(multilineString)
(四)例子
str = 'hello,wonyoung'
print(str);
str = "jang won young"
print(str);
str = [["jang won young"]]
print(str);
二、字符串长度计算
在 Lua 中,要计算字符串的长度(即字符串中字符的个数),你可以使用 string.len函数或 utf8.len 函数,包含中文的一般用 utf8.len,string.len 函数用于计算只包含 ASCII 字符串的长度。
(一)string.len
local myString = "Hello, RUNOOB!"
-- 计算字符串的长度(字符个数)
local length = string.len(myString)
print(length) -- 输出 14
以上实例的 myString 字符串只包含 ASCII 字符,因此 string.len 函数可以准确地返回字符串的长度。
(二)包含中文的字符串使用 utf8.len函数:
(三)转义字符
用于表示不能直接显示的字符,比如后退键,回车键等,如在字符串转换双引号可以使用 \。
所有的转义字符和所对应的意义:
三、字符串操作
序号 | 方法 |
---|---|
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.find (str, substr, [init, [plain]])在一个指定的目标字符串 str 中搜索指定的内容 substr,如果找到了一个匹配的子串,就会返回这个子串的起始索引和结束索引,不存在则返回 nil。init 指定了搜索的起始位置,默认为 1,可以一个负数,表示从后往前数的字符个数。plain 表示是否使用简单模式,默认为 false,true 只做简单的查找子串的操作,false 表示使用使用正则模式匹配。以下实例查找字符串 “Lua” 的起始索引和结束索引位置:> 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 |
四、字符串截取
字符串截取使用 sub() 方法。
string.sub() 用于截取字符串,原型为:
string.sub(s, i [, j])
参数说明:
s:要截取的字符串。
i:截取开始位置。
j:截取结束位置,默认为 -1,最后一个字符。
-- 字符串
local sourcestr = "prefix--runoobgoogletaobao--suffix"
print("\n原始字符串", string.format("%q", sourcestr))
-- 截取部分,第4个到第15个
local first_sub = string.sub(sourcestr, 4, 15)
print("\n第一次截取", string.format("%q", first_sub))
-- 取字符串前缀,第1个到第8个
local second_sub = string.sub(sourcestr, 1, 8)
print("\n第二次截取", string.format("%q", second_sub))
-- 截取最后10个
local third_sub = string.sub(sourcestr, -10)
print("\n第三次截取", string.format("%q", third_sub))
-- 索引越界,输出原始字符串
local fourth_sub = string.sub(sourcestr, -100)
print("\n第四次截取", string.format("%q", fourth_sub))
五、字符串大小写转换
string1 = "Lua";
print(string.upper(string1))
print(string.lower(string1))
六、字符串查找与反转
string = "Lua Tutorial"
-- 查找字符串
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("新字符串为",reversedString)