📦 deps(tsl): sync tsl-playbook from 49e6dadc

Source-Commit: 49e6dadc60
This commit is contained in:
ci[bot]
2026-07-20 01:42:42 +00:00
parent 713671152c
commit 9fedb2cf7f
61 changed files with 27118 additions and 25747 deletions
@@ -470,3 +470,911 @@ Src := "The First LETTER won't be replaced by&#160
return htmlToText(src);
// 结果:The First LETTER won't be replaced by 'one', but the Second letter will.
```
## 字符串 / 正则、模糊匹配、进制与拼音(由 base 迁入)
## `getPyStringList()`
汉字拼音首字母对照表
返回:tslobj
### 示例
```tsl
sl := getPyStringList();
return sl.values("明");
// 返回:M
```
## `sameFileName(s1, s2)`
比较两个文件名是否相同,如果同名返回true,否则返回false。
| 参数 | 类型 | 说明 |
| ---- | ------ | --------------------- |
| `s1` | string | 字符串,比较的文件名1 |
| `s2` | string | 字符串,比较的文件名2 |
返回:bool
### 示例
```tsl
return sameFileName('index.tsl', "test.tsl");
// 输出:0
```
## `formatFloatExt(v, dtype)`
格式化输出-数字
| 参数 | 类型 | 说明 |
| ------- | ------- | ---------- |
| `v` | real | 实数 |
| `dtype` | integer | 数据的格式 |
返回:string
### 示例
```tsl
return formatFloatExt(12345.67, 1);
// 结果:’ 12,345.67
return formatFloatExt("123");
// 结果:’ -
```
## `spaceByNumber(n)`
生成N个空格字符串
| 参数 | 类型 | 说明 |
| ---- | ------- | ---- |
| `n` | integer | 整数 |
返回:string
### 示例
```tsl
return write('---', spaceByNumber(2), '---');
// 运行信息打印结果:
```
## `tryUppercase(s)`
将字符串S转换成大写并返回,不抛出异常,转换失败时返回""
| 参数 | 类型 | 说明 |
| ---- | ------ | --------------- |
| `s` | string | 字符串,原字符串 |
返回:string
### 示例
```tsl
return tryUppercase("abc");
// 结果:"ABC"
```
## `tryLowercase(s)`
将字符串S转换成小写并返回,不抛出异常,转换失败时返回""
| 参数 | 类型 | 说明 |
| ---- | ------ | --------------- |
| `s` | string | 字符串,原字符串 |
返回:string
### 示例
```tsl
return tryUppercase("ABC");
// 结果:"abc"
```
## `letters(vlaue, ul)`
将数字与在字符串进行对照转换。基本用法同R的letters。在超出26的时候,仿excel的列名的规则提取。用于将excel数字列名转为字符串列名:1->'A'。
| 参数 | 类型 | 说明 |
| ------- | ------- | ----------------------- |
| `vlaue` | integer | 整数。正整数列名 |
| `ul` | integer | 整数。是否大写,默认为1 |
返回:string/array
### 示例
```tsl
return letters(1, 0);
// 结果:a
```
## `decToInt64(s)`
将字符串转换为64位整数。
| 参数 | 类型 | 说明 |
| ---- | ------ | ------------------------ |
| `s` | string | 字符串。需转换的字符串。 |
返回:integer
### 示例
范例01
```tsl
return decToInt64("12"); // 输出: 12L
```
范例02:十六进制格式字符串的转换
```tsl
return decToInt64("0x12"); // 报错
return strToInt64("0x12"); // 输出:18L
```
## `decToInt64Def(s, default)`
将字符串转换为64位整数。如果转换失败,则返回Default值。
| 参数 | 类型 | 说明 |
| --------- | ------- | ---------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `default` | integer | 整数。转换失败时返回的默认值 |
返回:integer
### 示例
范例01
```tsl
return decToInt64Def("12", 1); // 输出: 12L
return decToInt64Def("test", 1); // 输出: 1L
```
范例02:十六进制格式字符串的转换
```tsl
return decToInt64Def("0x12", 1); // 输出: 1L
return strToInt64Def("0x12", 1); // 输出:18L
```
## `tryDecToInt64(s, value)`
将字符串转换为64位整数。若转换成功,转换值通过Value输出。
| 参数 | 类型 | 说明 |
| ------- | ------------ | ----------------------------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `value` | integer\|nil | 变参。转换成功,为转换后的整数;否则,为NIL值。 |
返回:bool
### 示例
范例01:转换成功
```tsl
ret := tryDecToInt64("12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: 12L
```
范例02:转换失败
```tsl
ret := tryDecToInt64("test", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
```
范例03:十六进制格式字符串的转换
```tsl
ret := tryDecToInt64("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
ret := tryStrToInt64("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出:18L
```
## `decToInt32(s)`
将字符串转换为32位整数。
| 参数 | 类型 | 说明 |
| ---- | ------ | ---------------------- |
| `s` | string | 字符串。需转换的字符串 |
返回:integer
### 示例
范例01
```tsl
return decToInt32("12"); // 输出: 12
```
范例02:十六进制格式字符串的转换
```tsl
return decToInt32("0x12"); // 报错
return strToInt32("0x12"); // 输出:18
```
## `decToInt32Def(s, default)`
将字符串转换为32位整数。如果转换失败,则返回Default值。
| 参数 | 类型 | 说明 |
| --------- | ------- | ---------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `default` | integer | 整数。转换失败时返回的默认值 |
返回:integer
### 示例
范例01
```tsl
return decToInt32Def("12", 1); // 输出: 12
return decToInt32Def("test", 1); // 输出: 1
```
范例02:十六进制格式字符串的转换
```tsl
return decToInt32Def("0x12", 1); // 输出: 1
return strToInt32Def("0x12", 1); // 输出:18
```
## `tryDecToInt32(s, value)`
将字符串转换为32位整数。若转换成功,转换值通过Value输出。
| 参数 | 类型 | 说明 |
| ------- | ------------ | ----------------------------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `value` | integer\|nil | 变参。转换成功,为转换后的整数;否则,为NIL值。 |
返回:bool
### 示例
范例01:转换成功
```tsl
ret := tryDecToInt32("12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: 12
```
范例02:转换失败
```tsl
ret := tryDecToInt32("test", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
```
范例03:十六进制格式字符串的转换
```tsl
ret := tryDecToInt32("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
ret := tryStrToInt32("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出:18
```
## `decToInt(s)`
将字符串转换为整数。
| 参数 | 类型 | 说明 |
| ---- | ------ | ---------------------- |
| `s` | string | 字符串。需转换的字符串 |
返回:integer
### 示例
范例01
```tsl
return decToInt("12"); // 输出: 12
```
范例02:十六进制格式字符串的转换
```tsl
return decToInt("0x12"); // 报错
return strToInt("0x12"); // 输出:18
```
## `decToIntDef(s, default)`
将字符串转换为整数。如果转换失败,则返回Default值。
| 参数 | 类型 | 说明 |
| --------- | ------- | ---------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `default` | integer | 整数。转换失败时返回的默认值 |
返回:integer
### 示例
范例01
```tsl
return decToIntDef("12", 1); // 输出: 12
return decToIntDef("test", 1); // 输出: 1
```
范例02:十六进制格式字符串的转换
```tsl
return decToIntDef("0x12", 1); // 输出: 1
return strToIntDef("0x12", 1); // 输出:18
```
## `tryDecToInt(s, value)`
将字符串转换为整数。若转换成功,转换值通过Value输出。
| 参数 | 类型 | 说明 |
| ------- | ------------ | ----------------------------------------------- |
| `s` | string | 字符串。需转换的字符串 |
| `value` | integer\|nil | 变参。转换成功,为转换后的整数;否则,为NIL值。 |
返回:bool
### 示例
范例01:转换成功
```tsl
ret := tryDecToInt("12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: 12
```
范例02:转换失败
```tsl
ret := tryDecToInt("test", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
```
范例03:十六进制格式字符串的转换
```tsl
ret := tryDecToInt("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出: "转换失败!"
ret := tryStrToInt("0x12", value);
if ret then
return value;
else
return "转换失败!";
// 输出:18
```
## `floatToStrne(value)`
将实数转换成字符串类型。和FloatToStr的区别:在处理浮点数据时,FloatToStrne的结果不会输出为1E15等格式
| 参数 | 类型 | 说明 |
| ------- | ---- | ---- |
| `value` | real | 实数 |
返回:string
### 示例
```tsl
return floatToStrne(23.4);
// 输出字符串:"23.4"
return floatToStrne(1E15);
// 大数量级数据,输出:"1000000000000000"
```
## `fuzzyCompare(_type, s1, s2)`
根据指定算法,计算两字符串的相似性
| 参数 | 类型 | 说明 |
| ------- | ------- | ------------------------------------ |
| `_type` | integer | 模糊匹配算法类型,支持如下几种算法: |
| `s1` | string | 字符串1 |
| `s2` | string | 字符串2 |
返回:real
### 示例
```tsl
// 使用Jaccard相似度算法,计算字符串"kitten"和"sitting"的相似性
return fuzzyCompare(fzJaccard(), "kitten", "sitting"); // 等价于FuzzyCompare(2,"kitten","sitting")
// 返回:0.222222222222222
```
## `fuzzyCompareEx(_type, s1, s2, n, nret)`
根据指定算法,计算两字符串的相似性
| 参数 | 类型 | 说明 |
| ------- | ------- | ---------------------------------------------------------------------------------- |
| `_type` | integer | 模糊匹配算法类型,支持如下几种算法: |
| `s1` | string | 字符串1 |
| `s2` | string | 字符串2 |
| `n` | integer | 仅指定算法为FzJaccard、FzCosine、FzSimHash时,该参数有效;其对应含义和默认值如下: |
| `nret` | integer | 输出值;指定不同的算法时,其对应含义如下: |
返回:real
### 示例
```tsl
// 使用Jaccard相似度算法,指定切分字符长度为1,计算字符串"kitten"和"sitting"的相似性
t := fuzzyCompareEx(fzJaccard(), "kitten", "sitting", 1, nret);
return array(t, nret);
// t值为相似性,nret值为两字符串切分后交集中元素个数,返回值为array(0.428571428571429,3)
```
## `fzEditDistance()`
基于编辑距离(Edit Distance)的模糊匹配算法,核心是计算将一个字符串转换为另一个字符串所需的最小编辑操作次数,允许的操作包含插入、删除、替换三类。
返回:integer
### 示例
范例一:FuzzyCompare相似性计算
```tsl
return fuzzyCompare(fzEditDistance(), "kitten", "sitting");
// 返回:0.571428571428571
```
范例一:FuzzyCompareEx相似性计算
```tsl
t := fuzzyCompareEx(fzEditDistance(), "kitten", "sitting", n, nret);
return array(t, nret);
// 返回:array(0.571428571428571,3)
// 算法对比解析:
// 字符串"kitten"转换为"sitting"需要3步(k->se->i,添加g),字符串总长度7,相似度为1-3/7=4/7(即0.571428571428571
```
## `fzHammingDistance()`
Hamming Distance(汉明距离)算法类型:计算两字符串对应位置上不同字符的数量。
返回:integer
### 示例
范例一:FuzzyCompare相似性计算
```tsl
return fuzzyCompare(fzHammingDistance(), "kitten", "sitting");
// 返回:0.571428571428571
```
范例二:FuzzyCompareEx相似性计算
```tsl
t := fuzzyCompareEx(fzHammingDistance(), "kitten", "sitting", n, nret);
return array(t, nret);
// 返回:array(0.571428571428571,3)
// 算法对比解析:
// 字符串"kitten"、"sitting"对应位置上不同的字符有3处(k->s, e->i, g),字符串总长度为7,相似度为1-3/7=4/7(即0.571428571428571
```
## `fzLongestSubstring()`
Longest Substring(最长公共子串)算法类型:找出两字符串中连续出现的最长相同子串。
返回:integer
### 示例
范例一:FuzzyCompare相似性计算
```tsl
return fuzzyCompare(fzLongestSubstring(), "kitten", "sitting");
// 返回:0.428571428571429
```
范例二:FuzzyCompareEx相似性计算
```tsl
t := fuzzyCompareEx(fzLongestSubstring(), "kitten", "sitting", n, nret);
return array(t, nret);
// 返回:array(0.428571428571429,3)
// 算法对比解析:
// 字符串"kitten"、"sitting"中连续出现的最长相同子串为"itt",字符串总长度为7,相似度为3/7(即0.428571428571429
```
## `fzLongestSequnce()`
Longest Sequnce(最长公共子序列)算法类型:找出两字符串中顺序相同但不必连续的最长子序列
返回:integer
### 示例
范例一:FuzzyCompare相似性计算
```tsl
return fuzzyCompare(fzLongestSequnce(), "kitten", "sitting");
// 返回:0.571428571428571
```
范例二:FuzzyCompareEx相似性计算
```tsl
t := fuzzyCompareEx(fzLongestSequnce(), "kitten", "sitting", n, nret);
return array(t, nret);
// 返回:array(0.571428571428571,4)
// 算法对比解析:
// 字符串"kitten"、"sitting"中顺序相同但不必连续的最长子序列为"ittn",字符串总长度为7,相似度为4/7(即0.571428571428571
```
## `fzJaccard()`
Jaccard相似度算法类型:将字符串根据指定长度n(默认值为2)划分为两个字符集合,计算两集合交集元素个数与并集元素个数的比值。
返回:integer
### 示例
范例一:FuzzyCompare相似性计算,字符切分长度为2
```tsl
return fuzzyCompare(fzJaccard(), "kitten", "sitting");
// 返回:0.222222222222222
```
范例二:FuzzyCompareEx相似性计算,指定字符切分长度为1
```tsl
t := fuzzyCompareEx(fzJaccard(), "kitten", "sitting", 1, nret);
return array(t, nret);
// 返回:array(0.428571428571429,3)
// 算法对比解析:
// FuzzyCompare:字符切分长度为2,字符串"kitten"切分后的集合为:{ki, it, tt, te, en}"sitting"为:{si, it, tt, ti, in, ng};交集:{it, tt},并集:{ki, it, tt, te, en, si, ti, in, ng},相似度为2/9(即0.222222222222222
// FuzzyCompareEx:指定字符切分长度为1,字符串"kitten"切分后的集合为:{k, i, t, e, n}"sitting"为:{s, i, t, n, g},交集:{i, t, n},并集:{k, i, t, e, n, s, g},相似度为3/7(即0.428571428571429
```
## `fzCosine()`
Cosine(余弦相似度)算法类型:将字符串根据指定长度n(默认值为2)划分为两个字符集合,将字符集合转换为向量,计算两向量夹角的余弦值。
返回:integer
### 示例
范例一:FuzzyCompare相似性计算,字符切分长度为2
```tsl
return fuzzyCompare(fzCosine(), "kitten", "sitting");
// 返回:0.365148371670111
```
范例二:FuzzyCompareEx相似性计算,指定字符切分长度为1
```tsl
return fuzzyCompareEx(fzCosine(), "kitten", "sitting", 1, nret);
// 返回:0.746202507244636
// 算法对比解析:
// FuzzyCompare:字符切分长度为2,字符串"kitten"切分后的集合为:{ki, it, tt, te, en}"sitting"{si, it, tt, ti, in, ng};转换成向量分别为:[1, 1, 1, 1, 1, 0, 0, 0, 0]、[0, 1, 1, 0, 0, 1, 1, 1, 1],代入算法中,计算出的相似度为0.365148371670111
// FuzzyCompareEx:字符切分长度为1,字符串"kitten"切分后的集合为:{k, i, t, e, n}"sitting"{s, i, t, n, g},转换成向量分别为:[1, 1, 2, 1, 1, 0, 0]、[0, 2, 2, 0, 1, 1, 1],代入算法中,计算出的相似度为0.746202507244636
```
## `fzJaroWinkler()`
Jaro-Winkler距离算法类型:先统计两字符串的匹配字符数与换位次数,并代入Jaro距离算法公式,得到相似度,再根据两字符串的公共前缀长度给予额外加权,得到最终的相似度
返回:integer
### 示例
范例一:FuzzyCompare相似性计算
```tsl
return fuzzyCompare(fzJaroWinkler(), "kitten", "sitting");
// 返回:0.746031746031746
```
范例二:FuzzyCompareEx相似性计算
```tsl
return fuzzyCompareEx(fzJaroWinkler(), "kitten", "sitting", n, nret);
// 返回:0.746031746031746
```
## `fzSimHash()`
SimHash(局部敏感哈希)算法类型:对字符串分词并计算加权哈希生成二进制指纹,比较两个指纹间的对应位置上不同字符的数量
返回:integer
### 示例
范例一:FuzzyCompare相似性计算,特征词数量为3
```tsl
return fuzzyCompare(fzSimHash(), "kitten", "sitting");
// 返回:0.640625
```
范例二:FuzzyCompareEx相似性计算,特征词数量为1
```tsl
t := fuzzyCompareEx(fzSimHash(), "kitten", "sitting", 1, nret);
return array(t, nret);
// 返回:array(0.921875,5)
```
## `formatStrExt(s)`
判断字符串是否是字符串,不是字符串的显示为“-”
| 参数 | 类型 | 说明 |
| ---- | ------ | ------ |
| `s` | string | 字符串 |
返回:string
### 示例
```tsl
return formatStrExt('aaaaa');
// 结果:’aaaaa
return formatStrExt(123);
// 结果:’-
```
## `seprateStrToTotal(s)`
把用;分割的字符串转换为#分割
| 参数 | 类型 | 说明 |
| ---- | ------ | ------ |
| `s` | string | 字符串 |
返回:string
### 示例
```tsl
return seprateStrToTotal('债券型;现金型;配置型;股票型;保本型');
// 结果:’债券型#现金型#配置型#股票型#保本型’
```
## `totalStrToSeprate(s)`
把用#分割的字符串转换为;分割
| 参数 | 类型 | 说明 |
| ---- | ------ | ------ |
| `s` | string | 字符串 |
返回:string
### 示例
```tsl
return totalStrToSeprate ('债券型#现金型#配置型#股票型#保本型');
// 结果:’债券型;现金型;配置型;股票型;保本型’
```
## `dateStrToArr(end_dates, sep1, sep2)`
把日期区间字符串转换为列表
| 参数 | 类型 | 说明 |
| ----------- | ------ | -------------------- |
| `end_dates` | string | 日期区间字符串 |
| `sep1` | string | 日期区间字符串分割符 |
| `sep2` | string | 开始和截止日期分割符 |
返回:array
### 示例
```tsl
return dateStrToArr('2007-9-10;2007-9-10', '$', ';'); // '$'表示结束位置
// 输出:
// 示例包含说明文字,未作为可执行片段运行。
```
## `rDateStrToArr(rdate_list)`
把报告期字符串转换为列表
| 参数 | 类型 | 说明 |
| ------------ | ------ | ------------------------------------------ |
| `rdate_list` | string | 字符串,报告期字符串,多个报告期以分号区分 |
返回:array
### 示例
```tsl
return rDateStrToArr('20070331;20070630');
// 输出:
// Execute script error at Line:1
// function:__main__:line 1:instruction:usercall: function:rDateStrToArr compile error or not found
// function:__main__:line 1:instruction:usercall: function execute error
```
## `replaceStrByReg(s, reg_from_text, to_text)`
正则表达式快速字符串替换,大小写敏感。
| 参数 | 类型 | 说明 |
| --------------- | ------ | -------------------------------- |
| `s` | string | 字符串。源串 |
| `reg_from_text` | string | 字符串。待替换的部分,正则表达式 |
| `to_text` | string | 字符串。替换的字符串 |
返回:string
### 示例
```tsl
return replaceStrByReg("abcdeak", "A", "kkkk");
// 结果:abcdeak
```
## `replaceTextByReg(s, reg_from_text, to_text)`
正则表达式快速字符串替换,大小写不敏感。
| 参数 | 类型 | 说明 |
| --------------- | ------ | -------------------------------- |
| `s` | string | 字符串。源串 |
| `reg_from_text` | string | 字符串。待替换的部分,正则表达式 |
| `to_text` | string | 字符串。替换的字符串 |
返回:string
### 示例
```tsl
return replaceTextByReg("abcdeak", "a", "kkkk");
// 结果:kkkkbcdekkkkk
```
## `parseRegExpr3(s, reg_from_text, to_text, parse_ctrls)`
直接返回输出的正则表达式解析。
| 参数 | 类型 | 说明 |
| --------------- | ------ | -------------------------------- |
| `s` | string | 字符串。源串 |
| `reg_from_text` | string | 字符串。待替换的部分,正则表达式 |
| `to_text` | string | 字符串。替换的字符串 |
| `parse_ctrls` | string | 字符串。正则表达式控制串 |
返回:string
### 示例
```tsl
return parseRegExpr3("abcdeak", "ab", "kkkk", "ir");
// 结果:kkkkcdeak
```
## `floatToStrneW(value)`
将实数转换成宽字节字符串类型。和FloatToStrW的区别:在处理大数量级数据(如1E15、10^15等)时,FloatToStrneW的结果不会输出为1E15等格式。
| 参数 | 类型 | 说明 |
| ------- | ---- | ---- |
| `value` | real | 实数 |
返回:string
### 示例
```tsl
return floatToStrneW(1234.1234);
// 输出:L"1234.1234"
return floatToStrneW(1E15);
// 大数量级数据,输出:L"1000000000000000"
```
## `hztoPy(hz)`
汉字翻译为拼音
| 参数 | 类型 | 说明 |
| ---- | ------ | ----------- |
| `hz` | string | String 汉字 |
返回:string
### 示例
```tsl
return hztoPy("华夏优势"); // HXYS
return hztoPy("华夏盛势"); // HXCS HXSS
```
## `tostring(v)`
将数值转成字符串类型
| 参数 | 类型 | 说明 |
| ---- | ------ | ---- |
| `v` | number | 数值 |
返回:string
## `DT_Date()`
返回'Date'字符串。
返回:string
## `DT_Str()`
返回'String'字符串。
返回:string
## `DT_Real()`
返回'Real'字符串。
返回:string