Squirrel 3.0 string.slice() 完整用法
2026/7/2 4:53:26 网站建设 项目流程

一、基础语法

str.slice(start [, end])
  1. 功能:截取字符串片段,返回全新字符串;原字符串不可变,不会被修改。
  2. 区间规则左闭右开[start, end)
    • 包含start索引字符,不包含end索引字符。
  3. 索引规则
    • 正数:从字符串头部从 0 开始计数;
    • 负数:从字符串尾部倒着计数,-1= 最后 1 个字符,-2= 倒数第 2 个;
  4. 参数说明

    表格

    参数说明
    start起始下标,必填;支持正负
    end结束下标,可选;省略则截取到字符串末尾;支持正负

二、核心规则(官方文档)

  1. start为负数:实际下标 =字符串长度 + start
  2. end为负数:实际下标 =字符串长度 + end
  3. 省略第二个参数end:从start一直截取到末尾
  4. 索引越界不会自动截断,超出范围会抛出slice out of range异常(工控脚本尽量避免越界)

三、实例演示

测试字符串

squirrel

local s = "1.200"; // 下标:0:'1' 1:'.' 2:'2' 3:'0' 4:'0'

1. 单参数(截取到末尾)

squirrel

s.slice(0); // "1.200" 完整复制字符串 s.slice(2); // "200" 从下标2到最后 s.slice(-1); // "0" 取最后1个字符(你之前去尾零用到的写法) s.slice(-2); // "00" 最后2个字符

2. 双参数(指定起止区间)

squirrel

s.slice(0,3); // "1.2" 取0,1,2(不含下标3) s.slice(1,4); // ".20" s.slice(-4, -1);// ".20" 负数下标等效 s.slice(1,4)

3. 你代码里的关键用法(去末尾 0)

squirrel

// 取字符串最后一位字符 str.slice(-1); // 截断最后1个字符:从0截取到 len-1 str.slice(0, str.len() - 1);

对应之前修剪尾零逻辑:

squirrel

while (str.slice(-1) == "0") { // 去掉最后一位 str = str.slice(0, str.len() - 1); }

四、数组同样支持 slice ()

Squirrel 的array也有slice(),规则和字符串完全一致:

squirrel

local arr = [10,20,30,40]; arr.slice(1,3); // [20,30] arr.slice(-2); // [30,40]

五、和 Lua 字符串截取对比(避坑)

表格

功能Squirrel sliceLua string.sub
取最后一位str.slice(-1)string.sub(str, -1)
截断末尾str.slice(0, str.len()-1)string.sub(str, 1, string.len(str)-1)
长度获取str.len()方法string.len(str)全局函数

六、完整修剪浮点数尾零示例(结合 slice)

squirrel

function TrimFloatZero(str) { if (str.find(".") == null) return str; // 循环删除末尾0 while(str.slice(-1) == "0") { str = str.slice(0, str.len() - 1); } // 删除末尾小数点 if(str.slice(-1) == ".") { str = str.slice(0, str.len() - 1); } return str; } // 测试 local t1 = TrimFloatZero("1.200"); // "1.2" local t2 = TrimFloatZero("5.000"); // "5" local t3 = TrimFloatZero("3.140"); // "3.14"

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询