找回密码
马上加入

QQ登录

只需一步,快速开始

搜索
发新帖

2

收听

0

听众

8

主题

字符串和通配符 详解

IP属地:重庆市
发表于 2024-8-10 19:39:33 | 查看: 187| 回复: 0


print(string.len("我真的好想再活500年!"))
print(string.rep("a", 2 ^ 2))
print(string.lower("SDFDSFdf"))
print(string.upper("a??o"))

s = "[in brackets]"
print(string.sub(s,2,-2))
print(string.sub(s,2,3))
print(string.char(97))
i = 99
print(string.char(i, i + 1, i + 2))
print(string.byte("abc"))
print(string.byte("abc", 2))
print(string.byte("abc", -1))

print(string.format("pi = %.4f", 3.141592657))
print(string.format("%02d/%02d/%04d", 5, 11, 1990))

s = "hello world"
i, j = string.find(s, "world")
print(i, j)
--裁切 一部分 
print(string.sub(s, i, j))
i, j = string.find(s, "l")
print(i, j)
print(string.find(s, "lll"))


--------------------------------------------------------
s= [[
hello
world
what
are
your
name
]]
local t = {}
local i = 0
while true do
    i = string.find(s, "\n", i + 1)

    if i == nil then
        break
    end
    print("当前i的值为:"..i)
    table.insert(t,i)
end

for key, value in pairs(t) do
    print("当前key:"..key..",当前value:"..value)
end

s = string.gsub("Lua is cute", "cute", "great")
print(s)
s = string.gsub("all lii", "l", "x")
print(s)

s = string.gsub("all lii", "l", "x", 1)
print(s)
s = string.gsub("all lii", "l", "x", 2)
print(s)

print(string.gsub("hello,up-down!", "%A", "."))


print(string.gsub("one ,and two ; and three", "%a+", "word"))
print(string.gsub("one ,and two ; and three", "%a*", "word"))
print(string.gsub("one ,and two ; and three", "%a-", "word"))
print(string.gsub("one ,and two ; and three", "%a?", "word"))

test = "int x; /* x */ int y; /* y */"
print(string.gsub(test, "/%*.*%/", "<COMMENT>"))

test = "int x; /* x */ int y; /* y */"
print(string.gsub(test, "/%*.%*/", "<COMMENT>"))

print(string.gsub("a (enclosed (in) parentheses) line", "%b()", ""))
print(string.gsub("a (enclosed (in) parentheses) line", "%b()", "tihuan"))


----------------------------------------捕获----------------------------------------------
---Capture 这样的机制: 可以使用模式来捕获字符串中的一部分

pair = "name = Anna"
i, j, key, value = string.find(pair, "(%a+)%s*=%s*(%a+)")
print(i, j, key, value)

s=[[then he said:"it's all right"!]]
a,b,c,quotedPart= string.find(s, [[(["'])(.-)%1]])
print(quotedPart)
print(c)

print(string.gsub("hello Lua", "(%a)", "%1-%1"))
print(string.gsub("hello Lua","(.)(.)" , "%2%1"))
s = "the /quote{task} is to /em{change} that."
print(string.gsub(s, "/(%a+){(.-)}", "<%1>%2</%1>"))

s = "sin(3) = $[math.sin(3)]; 2^5 = $[2^5]"
print((string.gsub(s, "$(%b[])", function(x)
    print("截取内容为:"..x..",截取后内容"..string.sub(x, 2, -2))
    x = "return " .. string.sub(x, 2, -2)
    local f = loadstring(x)
    return f()
end)))

输出结果为:
30
aaaa
sdfdsfdf
A??O
in brackets
in
a
cde
97
98
99
pi = 3.1416
05/11/1990
7   11
world
3   3
nil
当前i的值为:6
当前i的值为:12
当前i的值为:17
当前i的值为:21
当前i的值为:26
当前i的值为:31
当前key:1,当前value:6
当前key:2,当前value:12
当前key:3,当前value:17
当前key:4,当前value:21
当前key:5,当前value:26
当前key:6,当前value:31
Lua is great
axx xii
axl lii
axx lii
hello.up.down.  3
word ,word word ; word word 5
wordword word,wordword wordword word;word wordword wordword 13
wordowordnwordeword word,wordawordnworddword wordtwordwwordoword word;word wordawordnworddword wordtwordhwordrwordewordeword    25
wordwordwordword word,wordwordwordword wordwordwordword word;word wordwordwordword wordwordwordwordwordword 25
int x; <COMMENT>    1
int x; /* x */ int y; /* y */   0
a  line 1
a tihuan line   1
1   11  name    Anna
it's all right
"
h-he-el-ll-lo-o L-Lu-ua-a   8
ehll ouLa   4
the <quote>task</quote> is to <em>change</em> that. 2
截取内容为:[math.sin(3)],截取后内容math.sin(3)
截取内容为:[2^5],截取后内容2^5
sin(3) = 0.14112000805987; 2^5 = 32
您需要登录后才可以回帖 登录 | 马上加入

QQ|Archiver|手机版|小黑屋|alg阿灵戈社区 ( 苏ICP备2023026137号-1|苏ICP备2023026137号-1 )

GMT+8, 2025-3-12 19:09 , Processed in 0.548042 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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