Lua string.sub()

Lua string.sub()_第1张图片
截取一段.jpg

前言#

今天来看一个字符串截取函数,作用就是从原字符串中指定两个索引,截取索引之间的字符作为结果字符串,要注意这个函数和我们之间总结过的函数string.gsub()虽然长得很像,但是貌似没有什么联系,接下来我们一起来看一下函数的用法。


string.sub()##

  • 原型:string.sub(s, i [, j])
  • 解释:返回字符串s从第i个字符到第j个字符的子串,参数i和参数j均可以为负数,如果省略参数j,默认为-1,也就是子串截止到原串的最后。一些特殊的使用方法,比如我们可以调用函数string.sub(s, 1, j)是返回字符串长度为j的前缀,调用函数string.sub(s, -i)返回子串长度为i的原串的后缀。

Usage##

  • 首先新建一个文件将文件命名为subtest.lua然后编写如下代码:
-- 显示源字符串
local sourcestr = "prefix--de asdsdjjj\0dsfdf56\0mfa54--suffix"
print("\nsourcestr is", string.format("%q", sourcestr))

-- 普通街区
local first_sub = string.sub(sourcestr, 4, 25)
print("\nfirst_sub is", string.format("%q", first_sub))

-- 取字符串前缀
local second_sub = string.sub(sourcestr, 1, 8)
print("\nsecond_sub is", string.format("%q", second_sub))

-- 取字符串后缀
local third_sub = string.sub(sourcestr, -10)
print("\nthird_sub is", string.format("%q", third_sub))

-- 索引越界
local fourth_sub = string.sub(sourcestr, -100)
print("\nfourth_sub is", string.format("%q", fourth_sub))

  • 运行结果
Lua string.sub()_第2张图片
string_sub.png

总结#

  • 使用这个函数需要注意的是参数i和参数j均表示索引,不要认为j是子串的长度,仅有一种特例,当参数i=1时,参数j为子串的长度。
  • 注意使用这个函数来取原创的前缀和后缀,其实只是函数使用的一种特例。
  • 有最后一组结果可以看出啊当指定的索引越界时,函数会选择最接近指定索引的的一个索引作为参数。
  • 注意函数string.sub()和之前讲过的函数string.gsub()貌似没什么关系。

你可能感兴趣的:(Lua string.sub())