ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 黄振国

Lua语法--08字符串

[复制链接]
 楼主| 发表于 2020-8-19 21:51:02 | 显示全部楼层
string.gmatch(str, pattern):回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil。
===============================================
#!/usr/local/bin/lua

for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:11 | 显示全部楼层
string.match(str, pattern, init):string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
===============================================
#!/usr/local/bin/lua

test1 = string.match("I have 2 questions for you.", "%d+ %a+")
print(test1)

test2 = string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
print(test2)
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:23 | 显示全部楼层
#字符串截取
===============================================
#!/usr/local/bin/lua
-- 字符串
local sourcestr = "prefix--runoobgoogletaobao--suffix"
print("\n原始字符串", string.format("%q", sourcestr))

-- 截取部分,第1个到第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))
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:31 | 显示全部楼层
#字符串大小写转换
===============================================
#!/usr/local/bin/lua
string1 = "Lua";
print(string.upper(string1))
print(string.lower(string1))
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:38 | 显示全部楼层
#字符串查找与反转
===============================================
#!/usr/local/bin/lua
string = "Lua Tutorial"
-- 查找字符串
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("新字符串为",reversedString)
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:46 | 显示全部楼层
#字符串格式化
===============================================
#!/usr/local/bin/lua
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))

string.format("%c", 83)                 -- 输出S
string.format("%+d", 17.0)              -- 输出+17
string.format("%05d", 17)               -- 输出00017
string.format("%o", 17)                 -- 输出21
string.format("%u", 3.14)               -- 输出3
string.format("%x", 13)                 -- 输出d
string.format("%X", 13)                 -- 输出D
string.format("%e", 1000)               -- 输出1.000000e+03
string.format("%E", 1000)               -- 输出1.000000E+03
string.format("%6.3f", 13)              -- 输出13.000
string.format("%q", "One\nTwo")         -- 输出"One\
                                        --   Two"
string.format("%s", "monkey")           -- 输出monkey
string.format("%10s", "monkey")         -- 输出    monkey
string.format("%5.3s", "monkey")        -- 输出  mon
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:51:58 | 显示全部楼层
#字符与整数相互转换
===============================================
#!/usr/local/bin/lua
-- 字符转换
-- 转换第一个字符
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))
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:52:06 | 显示全部楼层
#其他常用函数
===============================================
#!/usr/local/bin/lua
string1 = "www."
string2 = "runoob"
string3 = ".com"
-- 使用 .. 进行字符串连接
print("连接字符串",string1..string2..string3)

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

-- 字符串复制 2 次
repeatedString = string.rep(string2,2)
print(repeatedString)
===============================================
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 21:52:13 | 显示全部楼层
#匹配模式
===============================================
#!/usr/local/bin/lua
s = "Deadline is 30/05/1999, firm"
date = "%d%d/%d%d/%d%d%d%d"
print(string.sub(s, string.find(s, date)))    --> 30/05/1999
===============================================
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 18:57 , Processed in 0.036188 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表