Squirrel 3.0 string.slice() 完整用法
一、基础语法str.slice(start [, end])功能截取字符串片段返回全新字符串原字符串不可变不会被修改。区间规则左闭右开[start, end)包含start索引字符不包含end索引字符。索引规则正数从字符串头部从 0 开始计数负数从字符串尾部倒着计数-1 最后 1 个字符-2 倒数第 2 个参数说明表格参数说明start起始下标必填支持正负end结束下标可选省略则截取到字符串末尾支持正负二、核心规则官方文档若start为负数实际下标 字符串长度 start若end为负数实际下标 字符串长度 end省略第二个参数end从start一直截取到末尾索引越界不会自动截断超出范围会抛出slice out of range异常工控脚本尽量避免越界三、实例演示测试字符串squirrellocal s 1.200; // 下标0:1 1:. 2:2 3:0 4:01. 单参数截取到末尾squirrels.slice(0); // 1.200 完整复制字符串 s.slice(2); // 200 从下标2到最后 s.slice(-1); // 0 取最后1个字符你之前去尾零用到的写法 s.slice(-2); // 00 最后2个字符2. 双参数指定起止区间squirrels.slice(0,3); // 1.2 取0,1,2不含下标3 s.slice(1,4); // .20 s.slice(-4, -1);// .20 负数下标等效 s.slice(1,4)3. 你代码里的关键用法去末尾 0squirrel// 取字符串最后一位字符 str.slice(-1); // 截断最后1个字符从0截取到 len-1 str.slice(0, str.len() - 1);对应之前修剪尾零逻辑squirrelwhile (str.slice(-1) 0) { // 去掉最后一位 str str.slice(0, str.len() - 1); }四、数组同样支持 slice ()Squirrel 的array也有slice()规则和字符串完全一致squirrellocal 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)全局函数六、完整修剪浮点数尾零示例结合 slicesquirrelfunction 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