Lua中的字符串查找以及位运算的小问题

最近在lua的代码, 开发过程中碰到了有关字符串查找以及位运算的小问题. 这些问题的产生主要还是自己没有很系统的了解相应的库的操作所导致的. 这里简单记录一下

字符串查找

Lua中的字符串查找可以使用string.find函数, 但是这里的一个小问题: 子串可以包含一些模式(类似正则), 此函数会根据此模式来进行字符串的查找. 这个功能是默认启用的.

这里就带来一个问题: 如果我只是想单纯的进行子串匹配该怎么办呢. 之前想的办法是对部分特殊字符进行转义, 后来网上重新看了一下string.find函数的说明, 看到它还支持第四个参数, 用于是否使用plain模式来进行查找. 有兴趣的同学可以在这里看到例子.

位操作

Lua5.1版本是不支持位操作的, 但是Lua5.2以及LuaJIT是支持的, 当然还有其他的一些库.

在使用LuaJIT进行位操作的时候发现: 两个比较大的数值在进行与元算的时候竟然得到的是一个负数. 好吧, 碰到整个问题的主要还是怪自己没有仔细地看一下文档. 在Caveats一节讲到了这个问题. 引用一下里面的一段话:

Returning signed numbers from bitwise operations may be surprising to programmers coming from other programming languages which have both signed and unsigned types. But as long as you treat the results of bitwise operations uniformly everywhere, this shouldn’t cause any problems.

嗯, 要小心. 最后感谢一下无情的测试, 让我尽早发现了这个问题;)

lua

Comments