Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/base/string.md
T

16 KiB
Raw Blame History

基础函数 / 字符串

toHttpPostdata(v, data_mode)

声明:function

根据数据模式转换为字符串格式

参数 类型 说明
v any 待转换的数据
data_mode string 数据模式,支持 jsontslstream

返回:string

示例

value := array("Type": 1, "IDs": array("SZ000001"), "SUBs": array("date_s", "price"));
echo toHttpPostdata(value, "json");
// 输出:{"Type":1,"IDs":["SZ000001"],"SUBs":["date_s","price"]}

dateStrToArr(end_dates, sep1, sep2)

声明:function

把日期区间字符串转换为列表

参数 类型 说明
end_dates string 日期区间字符串
sep1 string 日期区间字符串分割符
sep2 string 开始和截止日期分割符

返回:array

示例

return dateStrToArr('2007-9-10;2007-9-10', '$', ';'); // 输出:'$'表示结束位置

floatToStrne(value)

声明:function

将实数转换成字符串类型。和FloatToStr的区别:在处理浮点数据时,FloatToStrne的结果不会输出为1E15等格式

参数 类型 说明
value real 实数

返回:string

示例

范例01:转换普通浮点数

return floatToStrne(23.4);
// 输出:"23.4"

范例02:转换大数量级浮点数

return floatToStrne(1E15);
// 输出:"1000000000000000"

floatToStrneW(value)

声明:function

将实数转换成宽字节字符串类型。和FloatToStrW的区别:在处理大数量级数据(如1E15、10^15等)时,FloatToStrneW的结果不会输出为1E15等格式

参数 类型 说明
value real 实数

返回:string

示例

范例01:转换普通浮点数

return floatToStrneW(1234.1234);
// 输出:L"1234.1234"

范例02:转换大数量级浮点数

return floatToStrneW(1E15);
// 输出:L"1000000000000000"

formatStrExt(s)

声明:function

判断字符串是否是字符串,不是字符串的显示为"-"

参数 类型 说明
s string 字符串

返回:string

示例

范例01:输入字符串

return formatStrExt('aaaaa');
// 输出:aaaaa

范例02:输入不是字符串时返回占位符

return formatStrExt(123);
// 输出:-

fuzzyCompare(_type, s1, s2)

声明:function

根据指定算法,计算两字符串的相似性

参数 类型 说明
_type integer 模糊匹配算法类型,支持如下几种算法:
s1 string 字符串1
s2 string 字符串2

返回:real

示例

// 使用Jaccard相似度算法,计算字符串"kitten"和"sitting"的相似性
return fuzzyCompare(fzJaccard(), "kitten", "sitting"); // 等价于FuzzyCompare(2,"kitten","sitting")
// 输出:0.222222222222222

fuzzyCompareEx(_type, s1, s2, n, nret)

声明:function

根据指定算法,计算两字符串的相似性

参数 类型 说明
_type integer 模糊匹配算法类型,支持如下几种算法:
s1 string 字符串1
s2 string 字符串2
n integer 仅指定算法为FzJaccard、FzCosine、FzSimHash时,该参数有效;其对应含义和默认值如下:
nret integer 输出值;指定不同的算法时,其对应含义如下:

返回:real

示例

// 使用Jaccard相似度算法,指定切分字符长度为1,计算字符串"kitten"和"sitting"的相似性
t := fuzzyCompareEx(fzJaccard(), "kitten", "sitting", 1, nret);
return array(t, nret);
// t值为相似性,nret值为两字符串切分后交集中元素个数,返回值为array(0.428571428571429,3)

fzCosine()

声明:function

Cosine(余弦相似度)算法类型:将字符串根据指定长度n(默认值为2)划分为两个字符集合,将字符集合转换为向量,计算两向量夹角的余弦值

返回:integer

示例

范例一:FuzzyCompare相似性计算,字符切分长度为2

return fuzzyCompare(fzCosine(), "kitten", "sitting");
// 输出:0.365148371670111

范例二:FuzzyCompareEx相似性计算,指定字符切分长度为1

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

fzEditDistance()

声明:function

基于编辑距离(Edit Distance)的模糊匹配算法,核心是计算将一个字符串转换为另一个字符串所需的最小编辑操作次数,允许的操作包含插入、删除、替换三类

返回:integer

示例

范例一:FuzzyCompare相似性计算

return fuzzyCompare(fzEditDistance(), "kitten", "sitting");
// 输出:0.571428571428571

范例一:FuzzyCompareEx相似性计算

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()

声明:function

Hamming Distance(汉明距离)算法类型:计算两字符串对应位置上不同字符的数量

返回:integer

示例

范例一:FuzzyCompare相似性计算

return fuzzyCompare(fzHammingDistance(), "kitten", "sitting");
// 输出:0.571428571428571

范例二:FuzzyCompareEx相似性计算

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

fzJaccard()

声明:function

Jaccard相似度算法类型:将字符串根据指定长度n(默认值为2)划分为两个字符集合,计算两集合交集元素个数与并集元素个数的比值

返回:integer

示例

范例一:FuzzyCompare相似性计算,字符切分长度为2

return fuzzyCompare(fzJaccard(), "kitten", "sitting");
// 输出:0.222222222222222

范例二:FuzzyCompareEx相似性计算,指定字符切分长度为1

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

fzJaroWinkler()

声明:function

Jaro-Winkler距离算法类型:先统计两字符串的匹配字符数与换位次数,并代入Jaro距离算法公式,得到相似度,再根据两字符串的公共前缀长度给予额外加权,得到最终的相似度

返回:integer

示例

范例一:FuzzyCompare相似性计算

return fuzzyCompare(fzJaroWinkler(), "kitten", "sitting");
// 输出:0.746031746031746

范例二:FuzzyCompareEx相似性计算

return fuzzyCompareEx(fzJaroWinkler(), "kitten", "sitting", n, nret);
// 输出:0.746031746031746

fzLongestSequnce()

声明:function

Longest Sequnce(最长公共子序列)算法类型:找出两字符串中顺序相同但不必连续的最长子序列

返回:integer

示例

范例一:FuzzyCompare相似性计算

return fuzzyCompare(fzLongestSequnce(), "kitten", "sitting");
// 输出:0.571428571428571

范例二:FuzzyCompareEx相似性计算

t := fuzzyCompareEx(fzLongestSequnce(), "kitten", "sitting", n, nret);
return array(t, nret);
// 输出:array(0.571428571428571,4)
// 算法对比解析:
// 字符串"kitten"、"sitting"中顺序相同但不必连续的最长子序列为"ittn",字符串总长度为7,相似度为4/7(即0.571428571428571

fzLongestSubstring()

声明:function

Longest Substring(最长公共子串)算法类型:找出两字符串中连续出现的最长相同子串

返回:integer

示例

范例一:FuzzyCompare相似性计算

return fuzzyCompare(fzLongestSubstring(), "kitten", "sitting");
// 输出:0.428571428571429

范例二:FuzzyCompareEx相似性计算

t := fuzzyCompareEx(fzLongestSubstring(), "kitten", "sitting", n, nret);
return array(t, nret);
// 输出:array(0.428571428571429,3)
// 算法对比解析:
// 字符串"kitten"、"sitting"中连续出现的最长相同子串为"itt",字符串总长度为7,相似度为3/7(即0.428571428571429

fzSimHash()

声明:function

SimHash(局部敏感哈希)算法类型:对字符串分词并计算加权哈希生成二进制指纹,比较两个指纹间的对应位置上不同字符的数量

返回:integer

示例

范例一:FuzzyCompare相似性计算,特征词数量为3

return fuzzyCompare(fzSimHash(), "kitten", "sitting");
// 输出:0.640625

范例二:FuzzyCompareEx相似性计算,特征词数量为1

t := fuzzyCompareEx(fzSimHash(), "kitten", "sitting", 1, nret);
return array(t, nret);
// 输出:array(0.921875,5)

getPyStringList()

声明:function

获取汉字拼音首字母对照表

返回:tslobj

示例

sl := getPyStringList();
return sl.values("明");
// 输出:M

hztoPy(hz)

声明:function

汉字翻译为拼音

参数 类型 说明
hz string String 汉字

返回:string

示例

范例01:转换第一个词组

return hztoPy("华夏优势");
// 输出:HXYS

范例02:转换多音字词组

return hztoPy("华夏盛势");
// 输出:HXCS HXSS

letters(vlaue, ul)

声明:function

将数字与在字符串进行对照转换。基本用法同R的letters。在超出26的时候,仿excel的列名的规则提取。用于将excel数字列名转为字符串列名:1->'A'

参数 类型 说明
vlaue integer 整数。正整数列名
ul integer 整数。是否大写,默认为1

返回:string/array

示例

return letters(1, 0);
// 输出:a

parseRegExpr3(s, reg_from_text, to_text, parse_ctrls)

声明:function

直接返回输出的正则表达式解析

参数 类型 说明
s string 字符串。源串
reg_from_text string 字符串。待替换的部分,正则表达式
to_text string 字符串。替换的字符串
parse_ctrls string 字符串。正则表达式控制串

返回:string

示例

return parseRegExpr3("abcdeak", "ab", "kkkk", "ir");
// 输出:kkkkcdeak

rDateStrToArr(rdate_list)

声明:function

把报告期字符串转换为列表

参数 类型 说明
rdate_list string 字符串,报告期字符串,多个报告期以分号区分

返回:array

示例

return rDateStrToArr('20070331;20070630');

replaceStrByReg(s, reg_from_text, to_text)

声明:function

正则表达式快速字符串替换,大小写敏感

参数 类型 说明
s string 字符串。源串
reg_from_text string 字符串。待替换的部分,正则表达式
to_text string 字符串。替换的字符串

返回:string

示例

return replaceStrByReg("abcdeak", "A", "kkkk");
// 输出:abcdeak

replaceTextByReg(s, reg_from_text, to_text)

声明:function

正则表达式快速字符串替换,大小写不敏感

参数 类型 说明
s string 字符串。源串
reg_from_text string 字符串。待替换的部分,正则表达式
to_text string 字符串。替换的字符串

返回:string

示例

return replaceTextByReg("abcdeak", "a", "kkkk");
// 输出:kkkkbcdekkkkk

seprateStrToTotal(s)

声明:function

把用;分割的字符串转换为#分割

参数 类型 说明
s string 字符串

返回:string

示例

return seprateStrToTotal('债券型;现金型;配置型;股票型;保本型');
// 输出:债券型#现金型#配置型#股票型#保本型

spaceByNumber(n)

声明:function

生成N个空格字符串

参数 类型 说明
n integer 整数

返回:string

示例

return write('---', spaceByNumber(2), '---');
// 运行信息打印结果:

tostring(v)

声明:function

将数值转成字符串类型

参数 类型 说明
v number 数值

返回:string

示例

echo tostring(123.45);

totalStrToSeprate(s)

声明:function

把用#分割的字符串转换为;分割

参数 类型 说明
s string 字符串

返回:string

示例

return totalStrToSeprate ('债券型#现金型#配置型#股票型#保本型');
// 输出:债券型;现金型;配置型;股票型;保本型

tryLowercase(s)

声明:function

将字符串S转换成小写并返回,不抛出异常,转换失败时返回""

参数 类型 说明
s string 字符串,原字符串

返回:string

示例

return tryUppercase("ABC");
// 输出:"abc"

tryUppercase(s)

声明:function

将字符串S转换成大写并返回,不抛出异常,转换失败时返回""

参数 类型 说明
s string 字符串,原字符串

返回:string

示例

return tryUppercase("abc");
// 输出:"ABC"