Lua 字符串操作
有勇气的牛排
421
lua
2024-09-07 17:22:49
字符串拼接
-
使用两个点 (..
) 运算符:
这是 Lua 中最常见的字符串拼接方式,用 ..
将多个字符串连接在一起。
local ip_key = "blacklist" .. "_" .. client_ip
-
使用 table.concat
函数:
如果需要拼接多个字符串,尤其是在循环中,可以先将字符串放入一个表中,然后使用 table.concat
一次性拼接,提高性能。
local parts = {"blacklist", "_", client_ip}
local ip_key = table.concat(parts)
-
使用字符串格式化 (string.format
):
类似于 C 语言中的 printf
函数,通过占位符和参数来拼接字符串,适用于需要格式化字符串的情况。
local ip_key = string.format("blacklist_%s", client_ip)
-
字符串插值(适用于 Lua 5.1+ 的 Fennel 等扩展):
Lua 本身不支持原生的字符串插值,但在 Lua 的一些扩展或高级库中可能支持,使用起来更为简洁直观。
local ip_key = ("blacklist_%s"):format(client_ip)
<h2><a id="_0"></a>字符串拼接</h2>
<ol>
<li>
<p><strong>使用两个点 (<code>..</code>) 运算符:</strong></p>
<p>这是 Lua 中最常见的字符串拼接方式,用 <code>..</code> 将多个字符串连接在一起。</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">local</span> ip_key = <span class="hljs-string">"blacklist"</span> .. <span class="hljs-string">"_"</span> .. client_ip
</code></div></pre>
</li>
<li>
<p><strong>使用 <code>table.concat</code> 函数:</strong></p>
<p>如果需要拼接多个字符串,尤其是在循环中,可以先将字符串放入一个表中,然后使用 <code>table.concat</code> 一次性拼接,提高性能。</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">local</span> parts = {<span class="hljs-string">"blacklist"</span>, <span class="hljs-string">"_"</span>, client_ip}
<span class="hljs-keyword">local</span> ip_key = <span class="hljs-built_in">table</span>.<span class="hljs-built_in">concat</span>(parts)
<span class="hljs-comment">-- https://www.couragesteak.com/article/474 有勇气的牛排创作</span>
</code></div></pre>
</li>
<li>
<p><strong>使用字符串格式化 (<code>string.format</code>):</strong></p>
<p>类似于 C 语言中的 <code>printf</code> 函数,通过占位符和参数来拼接字符串,适用于需要格式化字符串的情况。</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">local</span> ip_key = <span class="hljs-built_in">string</span>.<span class="hljs-built_in">format</span>(<span class="hljs-string">"blacklist_%s"</span>, client_ip)
</code></div></pre>
</li>
<li>
<p><strong>字符串插值(适用于 Lua 5.1+ 的 Fennel 等扩展):</strong></p>
<p>Lua 本身不支持原生的字符串插值,但在 Lua 的一些扩展或高级库中可能支持,使用起来更为简洁直观。</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">local</span> ip_key = (<span class="hljs-string">"blacklist_%s"</span>):<span class="hljs-built_in">format</span>(client_ip)
</code></div></pre>
</li>
</ol>
留言