16 KiB
基础函数 / 字符串
toHttpPostdata(v, data_mode)
声明:function
根据数据模式转换为字符串格式
| 参数 | 类型 | 说明 |
|---|---|---|
v |
any | 待转换的数据 |
data_mode |
string | 数据模式,支持 json 和 tslstream |
返回: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->s,e->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"