类代码
local StringUtil = {}
StringUtil.__index = StringUtil
function StringUtil:new()
local self = {}
setmetatable(self, StringUtil)
return self
end
function StringUtil:trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
function StringUtil:unescape(s)
s = string.gsub(s, "+", " ")
s = string.gsub(s, "%%(%x%x)", function(h)
return string.char(tonumber(h, 16))
end)
return s
end
function StringUtil:escape(s)
s = string.gsub(s, "([$=+%c])", function(c)
return string.format("%%%02X", string.byte(c))
end)
s = string.gsub(s, " ", "+")
return s
end
function StringUtil:encode(t)
local s = ""
for k, v in pairs(t) do
s = s .. "&" .. self:escape(k) .. "=" .. self:escape(v)
end
return string.sub(s, 2)
end
function StringUtil:decode(s)
local t = {}
for name, value in string.gfind(s, "([^&=]+)=([^&=]+)") do
name = self:unescape(name)
value = self:unescape(value)
t[name] = value
end
return t
end
return StringUtil
调用方式
local StringUtil = require 'StringUtil'
local a = " aa "
local util = StringUtil:new()
print(util:trim(a))
t = {name = "aaa", query = "a+b = c", q = "yes or no"}
a = (util:decode(util:encode(t)))
for k, v in pairs(a) do
print(k, v)
end
分享到:
相关推荐
简单的lua操作字符串 去除空格 分割字符串到数组 验证.........
本文将详细探讨标题和描述中提到的知识点:使用lua检测系统进程和窗口类名,以及lua字符串的加密与解密,包括调用dll进行高级操作。 首先,我们关注的是“lua检测系统进程和所有窗口类名”。在lua中,通常需要通过...
尽管Lua的设计追求简洁和高效,但在处理大量字符串连接时,还是需要程序员了解和注意Lua字符串内部化的机制,采取合适的方法来优化代码性能。这样可以确保在追求代码清晰和可维护的同时,也能保证程序的运行效率。
对于int64,可以将其转换为字符串,然后在Lua中进行处理。例如,你可以将int64值转换成十六进制字符串,然后在需要时再还原回去。这种方法虽然增加了代码复杂性,但可以避免依赖额外的库。 3. 分拆处理:另一种方法...
这对于数据序列化、网络传输或存储特别有用,它可以将多个变量按照特定格式组合成一个单一的字符串。 5. **pio库**: - `pio`库可能是用于处理并行输入输出(Parallel Input/Output)的,允许lua程序控制GPIO引脚...
上述内容涵盖了lua扩展库V1.6的主要功能和用法,通过这些扩展库,Lua语言的应用范围得到了极大的扩展,可以被广泛应用于嵌入式系统开发、网络编程、数据处理、信号处理等领域。使用这些扩展库能够帮助开发者以更加...
1. **XML解析**:LuaXML提供了解析XML文档的API,可以将XML字符串或文件转换为 Lua 数据结构,如表(table)。这样,用户可以方便地遍历、访问和修改XML文档的内容。 2. **事件驱动解析**:LuaXML可能采用了事件...
Lua的表格可以看作是一种关联数组,不仅可以存储数值、字符串,还可以存储函数和其他表格,这种灵活性使得它非常适合处理复杂的数据结构。例如,你可以用一个表格来表示一个数据集,每个元素代表一条记录,记录的各...
书中的内容涵盖了Lua的多个核心方面,包括源文件划分、代码风格、虚拟机实现、内存管理、全局状态机以及字符串处理等。 首先,第一章概览中,作者深入到源代码层面,分析了Lua的源文件结构,这包括了源文件的组织...
// 将字符串压入栈 return 2; // 返回值的数量 } LUALIB_API int my_init(lua_State *L) { lua_register(L, "foo", my_foo); // 注册函数 return 0; } ``` 2. **编译C代码为.so文件**: - 使用`gcc-shared`...
例如,可以导入`lua_pcall`来执行Lua脚本,`lua_gettop`获取 Lua 栈顶的元素数量,以及`lua_pushstring`和`lua_tostring`来传递和转换字符串等数据类型。这些函数的使用方式与C语言中的API保持一致。 在Delphi项目...
3. Lua字符串操作 在`lstrlib`库中,大部分涉及字符串的函数都会先调用`luaL_checklstring`检查参数并获取字符串。这个函数实际上是对`lua_tolstring`的封装,确保参数是字符串类型。如果需要修改字符串,会先创建`...
Lua提供了丰富的字符串处理函数,如`string.sub()`、`string.find()`和`string.gmatch()`,帮助我们解析数据流。 5. **控制继电器**:继电器是一种电子开关,可以通过控制其状态实现电路的通断。在Lua中,我们可能...
- JSON字符串 -> LUA字符串 - JSON数字 -> LUA数字 - JSON布尔值 -> LUA布尔值 - JSON null -> LUA nil 4. **处理特殊场景** - **处理嵌套结构**:JSON中的嵌套对象和数组在LUA中会被转换为嵌套的表。 - **...
说 say是用于i18n或您需要命名空间字符串的任何其他情况的简单字符串键/值存储。 退房的扩展例子。 s = require ( " say " )s: set_namespace ( " en " )s: set ( ' money ' , ' I have %s dollars ' )s: set ( ' ...
词法分析阶段,Lua会处理各种token,包括标识符、数字、字符串和操作符等。在Lua中,操作符如加号、等号、分号等都有其特定的用法和含义。Lua的语法用扩展的BNF(巴科斯范式)表达式描述,通过这种方式定义了有效...
三、具体实践:Lua字符串优化 - 孙俊杰的"unity lua表string优化"可能包含了关于字符串池的优化策略。字符串池是一种将重复字符串合并为一个实例的机制,可以减少内存碎片,提高内存利用率。在Lua中,使用`string....
这样的API通常包括解析JSON字符串到Lua表,以及将Lua表转换成JSON字符串的功能。 标签“Lua操作Json的C扩展模块”进一步强调了Json11ForLua的主要功能,即为Lua提供方便快捷的JSON处理能力。在实际应用中,例如游戏...
3. 数据类型转换:Lua和Java之间的数据类型可以相互转换,如Lua表可以映射为Java集合,Lua字符串可以作为Java字符串使用等。 4. 错误处理:当Lua脚本运行时发生错误,可以捕获并处理Java异常。 LuaJava的使用场景...
Lua还支持长字符串的定义方式,即使用两个正方括号之间插入等号定义不同级别的长字符串。 Lua的基本词法单元包括标识符、关键字、数字字面量、字符串字面量、运算符和分隔符。Lua的语法和句法在官方手册中有详细的...