lua string.sub

在Lua中,string.sub函数用于截取字符串,其语法如下:

string.sub(s, i, j)

其中:

  • s 是要截取的字符串。

  • i 是截取的起始索引(从1开始)。

  • j 是截取的结束索引(可以为负数,表示从字符串末尾开始计数)。

如果不提供 j 参数,则默认截取到字符串的末尾,即 string.sub(s, i) 等同于 string.sub(s, i, -1)

以下是一些使用示例:

  1. 截取从第2个字符到倒数第2个字符的子串
    s = "[in brackets]"
    print(string.sub(s, 2, -2))  -- 输出: in
    ```

2. **截取字符串的第一个字符到第5个字符** <b class="card40_249__sup_a7f6" data-sup="sup">1</b>:

```lua
    str1 = string.sub("HELLO HAICODER!", 1, 5)
    print(str1)  -- 输出: HELLO
    ```

3. **截取字符串的最后三个字符** <b class="card40_249__sup_a7f6" data-sup="sup">1</b>:

```lua
    str2 = string.sub("HaiCoder Lua", -3)
    print(str2)  -- 输出: Lua
    ```

4. **处理含有中文的字符串** <b class="card40_249__sup_a7f6" data-sup="sup">2</b>:

```lua
    local str1 = "字符"
    local char = string.byte(str1, 1)
    local len = string.chsize(char)
    print(string.sub(str1, 1, len))  -- 输出: 字符
    ```

### 建议

- 当处理含有中文的字符串时,需要注意每个中文字符可能占用25个字节,因此在使用 `string.sub` 时,需要先确定字符的字节长度,以确保正确截取。

- 可以使用 `string.byte` 函数来获取字符的字节长度,然后根据这个长度进行截取<b class="card40_249__sup_a7f6" data-sup="sup">3</b>。

希望这些信息对你有所帮助!
Top