lyh916

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  201 随笔 :: 0 文章 :: 12 评论 :: 21万 阅读

参考链接:

http://cloudwu.github.io/lua53doc/manual.html#pdf-string.byte

 

1.string.gsub

gsub是Global SUBstitution的缩写,即全局替换

返回结果和匹配次数

local str, num = string.gsub("p皮啊b皮啊", "", "hi");
print(str);--p皮hib皮hi
print(num);--2

 

2.string.gmatch

gmatch,全局匹配

返回一个迭代器函数

s = "hello啊啊world啊from啊Lua"
for w in string.gmatch(s, "") do
    print(w)
end
-------- 啊

 

3.string.sub

字符串截取,声明为:string.sub (s, i [, j]),表示截取第i到第j个字节的字符串

要注意的是在utf-8中,1个英文占1个字节,1个中文占3个字节,所以截取含中文的字符串可能会有问题

print(string.sub("abcd", 2, 3));--bc
print(string.sub("a哈啊皮啊皮", 1, 2));--a�(乱码)

 

4.string.match

匹配,非全局

返回第一个匹配到的字符串

print(string.match("啊啊皮啊皮哈哈", ""));--皮

 

5.string.len

返回字节数

print(string.len("ab"));--2
print(string.len("a啊b"));--5

 

6.string.byte

返回指定范围的内部数字编码

print(string.byte("", 1, 3));--229 149 138

 

7.string.find

返回第一个匹配到的字符串的起始和结束位置

print(string.find("啊a皮啊哈", ""));--5 7

 

8.string.pack & string.unpack

参考链接:https://blog.csdn.net/oYuLinZuo/article/details/103800991

对于string.pack的第一个参数,解释如下:

复制代码
function Test()
  --258的二进制表示:
  --00000001 00000010
  local str = string.pack(">I2", 258) --大端编码,编码一个2字节长的无符号int
  print(type(str))
  print(str)
  print(string.len(str))
  for i=1,string.len(str) do
      print(string.byte(str, i))
  end
  print(string.unpack(">I2", str))
end
复制代码

输出:

posted on   艰苦奋斗中  阅读(772)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示