lua.string函数 string.dump/string.find函数练习

淡若初秋学习日记 淡若初秋学习日记 61 人阅读 | 1 人回复 | 2025-04-03

-- -- --*****************************************************************************
-- -- string.dump (function [, strip]) --字符串转化二进制函数
local function add(a,b)
    print("大家好")
end
local fun = string.dump(add)
print(fun) -- 字节码
local fun1 = load(fun)
fun1()
-- -- --*****************************************************************************

-- 下面的表列出了Lua支持的所有字符类:

-- 单个字符(除 ^$()%.[]*+-? 外): 与该字符自身配对

-- .(点): 与任何字符配对
-- %a: 与任何字母配对
-- %c: 与任何控制符配对(例如\n)
-- %d: 与任何数字配对
-- %l: 与任何小写字母配对
-- %p: 与任何标点(punctuation)配对
-- %s: 与空白字符配对
-- %u: 与任何大写字母配对
-- %w: 与任何字母/数字配对
-- %x: 与任何十六进制数配对
-- %z: 与任何代表0的字符配对
-- %x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对
-- [数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对
-- [^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对

-- string.find (s, pattern [, init [, bool]])
--[[
s = string
pattern = 要匹配的内容
init = i  开始搜索的位置
bool 布尔  特殊符号的匹配
-- utf8(1-4字节)/utf16/ansi/gb18030(2-字节)
-- Unicode 是同一字符集
]]--

-- 练习2 搜索传入的武器是否在字符串str里,如果在
local str = "木剑|屠龙|麻花|裁决|钩子"
local function add(characterString,searchFor)
    local start,complete = string.find(characterString,searchFor)
    if start then
        print("是的没错,"..searchFor.."在我手里,有本事你来抢啊?!".."所在位置:"..start.."-"..complete)
    else
        print("休要血口喷人"..searchFor.."根本不在我手里")
    end
    return start,complete
end
local ppd,ppd2 = add(str,"AK")
print(ppd,ppd2)

-- 练习2 传入起始搜索位置,并搜索传入的武器是否在字符串str里,如果在
local str = "木剑|屠龙|麻花|裁决|钩子"

local function add(characterString,searchFor,startPosition)
    local start,complete = string.find(characterString,searchFor,startPosition)
    if start then
        print("是的没错,"..searchFor.."在我手里,有本事你来抢啊?!".."所在位置:"..start.."-"..complete)
    else
        print("休要血口喷人"..searchFor.."根本不在我手里")
    end
    return start,complete
end
local ppd,ppd2 = add(str,"麻花",1)
print(ppd,ppd2)

分享到:

回答|共 1 个

骤雨_Ai

发表于 2025-4-3 14:38:57 | 显示全部楼层


arklr73021 发表于 2025-4-3 14:38
lua.string函数 string.dump/string.find函数练习-- -- --********************************************** ...
嘻嘻~同学练习得很认真呢!让小姐姐来帮你看看这段Lua代码吧~ (◕‿◕✿)

关于string.dump和string.find的练习都写得很棒呢!不过小姐姐发现几个小细节可以优化哦:

1. 第一个练习中,string.dump转换的函数add没有返回值呢~建议加上return a+b会更完整哦!

2. 第二个练习中,搜索"AK"的结果会显示"休要血口喷人",这个提示语好有趣呀!(≧▽≦)

3. 第三个练习传入起始位置1,其实可以省略的,因为默认就是从1开始搜索呢~

小姐姐帮你整理一下string.find的常用格式:
  1. -- 基本用法
  2. local start, finish = string.find("hello world", "world")
  3. -- 带起始位置
  4. local start, finish = string.find("hello world", "world", 1)
  5. -- 模式匹配
  6. local start, finish = string.find("hello 123", "%d+") -- 匹配数字
复制代码

同学要继续加油练习哦!有什么不明白的随时问小姐姐~ (。♥‿♥。)

PS:下次可以试试用string.match来提取匹配内容呢,也很有趣的!   

-- Ai喂养中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则