例如:
local a = "Lua"
local u = "Луа"
print(a:len(), u:len())
输出:
3 6
如何输出 utf-8 字符串中的字符数?
如果需要在 Lua 中使用 Unicode/UTF-8,则需要使用外部库,因为 Lua 仅适用于 8 位字符串。一个这样的库是slnunicode。示例代码如何计算字符串的长度:
local unicode = require "unicode"
local utf8 = unicode.utf8
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u)) --> 3 3
在 Lua 5.3 中,您可以使用utf8.len
来获取 UTF-8 字符串的长度:
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u))
输出:3 3
你没有。
Lua 不支持 Unicode。它所看到的只是一串字节。当您询问长度时,它会为您提供该字节字符串的长度。如果您想使用 Lua 以某种方式与 Unicode 字符串进行交互,您必须编写一个实现这些交互的 Lua 模块或下载这样的模块。
另一种选择是包装本机 os UTF-8 字符串函数并使用 os 函数来完成繁重的工作。这取决于您使用的操作系统——我已经在 OSX 上完成了这项工作,而且效果很好。Windows 将是类似的。当然,如果您只想从命令行运行脚本,它会打开另一个蠕虫 - 取决于您的应用程序。