lyh916

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

参考链接:

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 2020-02-22 16:17  艰苦奋斗中  阅读(715)  评论(0编辑  收藏  举报