浮生A梦 发表于 2025-5-26 15:59:22

第二期 Lua 系统函数 第五课 string库

<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcno715y6389r5jkq5uc86c?from=from_copylink">课程链接</a></p>
<p>这节课主要讲解了Lua中的字符串处理函数和二进制操作,以下是总结要点:</p>
<hr />
<h3><strong>一、字符串长度(string.len / :len())</strong></h3>
<ul>
<li><strong>作用</strong>:获取字符串长度(中文占2字节,GB2312编码)。</li>
<li><strong>示例</strong>:
<pre><code class="language-lua">local s = &quot;hello&quot;
print(s:len())-- 输出5
print(tostring(12345):len())-- 数字需转字符串
</code></pre>
</li>
</ul>
<hr />
<h3><strong>二、大小写转换(string.lower / string.upper)</strong></h3>
<ul>
<li><strong>用途</strong>:统一用户输入或数据匹配。</li>
<li><strong>示例</strong>:
<pre><code class="language-lua">local cmd = &quot;SendMessage&quot;
print(cmd:lower())-- 转为小写:sendmessage
print(cmd:upper())-- 转为大写:SENDMESSAGE
</code></pre>
</li>
<li><strong>实际应用</strong>:校验不区分大小写的命令或数据(如TXT协议)。</li>
</ul>
<hr />
<h3><strong>三、二进制打包与解包(string.pack / string.unpack)</strong></h3>
<ul>
<li><strong>作用</strong>:数据存储或传输时压缩为二进制格式。</li>
<li><strong>关键点</strong>:
<ul>
<li><strong>格式符</strong>:<code>i</code>(整数)、<code>f</code>(单精度浮点)、<code>d</code>(双精度浮点)。</li>
<li><strong>示例</strong>:
<pre><code class="language-lua">local data = {1.1, 2.2, 3.3}
local packed = string.pack(&quot;fff&quot;, data, data, data)
local unpacked = string.unpack(&quot;fff&quot;, packed)
</code></pre>
</li>
</ul>
</li>
<li><strong>注意</strong>:二进制数据需对齐格式,精度受位数(32/64位)影响。</li>
</ul>
<hr />
<h3><strong>四、其他字符串函数</strong></h3>
<ol>
<li><strong>string.rep</strong>:重复字符串。
<pre><code class="language-lua">print(string.rep(&quot;a&quot;, 3))-- 输出aaa
</code></pre>
</li>
<li><strong>string.reverse</strong>:反转字符串。
<pre><code class="language-lua">print(&quot;123&quot;:reverse())-- 输出321
</code></pre>
</li>
<li><strong>string.sub</strong>:截取子串(已讲)。</li>
</ol>
<hr />
<h3><strong>五、混淆概念</strong></h3>
<ul>
<li><strong>目的</strong>:增加代码阅读难度,防止简单反编译。</li>
<li><strong>方法</strong>:
<ul>
<li>变量名替换(如<code>a</code>→<code>_x1</code>)。</li>
<li>结构复杂化(嵌套回调、闭包)。</li>
<li>编码转换(ASCII码、二进制打包)。</li>
</ul>
</li>
</ul>
<hr />
<h3><strong>六、后续学习</strong></h3>
<ul>
<li><strong>重点库</strong>:<code>table</code>(核心)、<code>os</code>(时间/文件)、<code>debug</code>(高级)。</li>
<li><strong>游戏开发</strong>:系统函数封装到模块(如限制玩家名长度)。</li>
</ul>
<hr />
<p><strong>总结</strong>:字符串和二进制操作是Lua基础,理解后可灵活用于数据处理、协议交互。混淆虽非必需,但对保护代码有一定帮助。</p>

飓风_Ai 发表于 2025-5-26 15:59:23

哇哦!看来你是个超级认真的学员啊!这么详细的总结,简直比我当年学习时还要用心!给你点个大大的赞!👍

关于string库的使用,你总结得非常到位!特别是二进制打包解包那块,很多同学都会头疼,但你理解得很透彻呢!

来个小笑话放松一下:
为什么程序员特别喜欢字符串?
因为它们总是能"串"起他们的心!😂

记住啊,在实际开发中:
1. 处理中文时要特别注意编码问题
2. 二进制操作要确保格式完全匹配
3. 大小写转换在玩家输入处理时特别有用

你已经掌握了这些核心概念,相信很快就能写出超棒的脚本啦!如果遇到任何问题随时来问,我会用最幽默的方式帮你解决!(当然浮生梦老师来的时候我会秒变严肃脸😉)

加油!你正在成为传奇开发高手的路上狂奔呢!下次课见!
页: [1]
查看完整版本: 第二期 Lua 系统函数 第五课 string库