# 运行时 / 字符串 ## `adjustLineBreaks(s, style)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ------- | ------------------- | ---- | | `s` | string | | | `style` | TTextLineBreakStyle | | 返回:string ## `ansiDequotedStr(s, aquote)` 字符串相关函数。 | 参数 | 类型 | 说明 | | -------- | ------ | ---- | | `s` | string | | | `aquote` | string | | 返回:string ## `ansiIndexStr(a_text, a_values)` 判定指定的字符串Atext可以匹配到的第一个由参数Avalues指定的字符串数组中元素索引号,就是数组的第几个元素(从0开始计算)。返回整数,如果没有找到匹配的字符串,就返回-1。与AnsiEndsText函数不同,字符串的匹配是大小写敏感的 注意:这种判定是基于大小写敏感 | 参数 | 类型 | 说明 | | ---------- | ------ | -------------------------- | | `a_text` | string | 字符串类型,需匹配、查找串 | | `a_values` | array | 字符串型数组,匹配串数组 | 返回:int ## `ansiIndexText(a_text, a_values)` 判定指定的字符串Atext可以匹配到的第一个由参数Avalues指定的字符串数组中元素索引号,就是数组的第几个元素(从0开始计算)。返回整数,如果没有找到匹配的字符串,就返回-1 注意:这种判定是基于大小写不敏感 | 参数 | 类型 | 说明 | | ---------- | ------ | -------------------------- | | `a_text` | string | 字符串类型,需匹配、查找串 | | `a_values` | array | 字符串型数组,匹配串数组 | 返回:int ## `ansiMatchStr(a_text, avalues)` 判定指定的字符串Atext是否可以匹配由参数Avalues指定的字符串数组中的某个字符串。返回布尔型真假值,如果Atext匹配到了Avalues数组中的某个字符串,就返回真,否则返回假。与AnsiMatchText函数不同,字符串的匹配是大小写敏感的 注意:这种判定是基于大小写敏感 | 参数 | 类型 | 说明 | | --------- | ------ | ---------------------- | | `a_text` | string | 字符串类型,子串 | | `avalues` | array | 字符串型数组,源串数组 | 返回:bool ## `ansiMatchText(a_text, avalues)` 判定指定的字符串Atext是否可以完全匹配由参数Avalues指定的字符串数组中的某个字符串。返回布尔型真假值,如果Atext匹配到了Avalues数组中的某个字符串,就返回真,否则返回假。 注意:这种判定是基于大小写不敏感。 | 参数 | 类型 | 说明 | | --------- | ------ | ---------------------- | | `a_text` | string | 字符串类型,子串 | | `avalues` | array | 字符串型数组,源串数组 | 返回:bool ## `ansiQuotedStr(s, quote)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ------- | ------ | ---- | | `s` | string | | | `quote` | string | | 返回:string ## `ansiStr2Array(value, aps)` 常用字符串函数相关函数。 | 参数 | 类型 | 说明 | | ------- | ------ | ---- | | `value` | string | | | `aps` | string | | 返回:array ## `boolToStr(s)` 将布尔型转换成字符串类型并返回。参数UseBoolStrs一般为假,如果B为真,函数返回'-1',如果B为假,返回'0'。若想返回’True’与’False’的结果可用BoolToStr2实现。 | 参数 | 类型 | 说明 | | ---- | ---- | ---------------------------------- | | `s` | bool | 数字字符串Default:布尔型,一般为假 | 返回:string ## `containsText(a_text, a_sub_text)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ------------ | ------ | ---- | | `a_text` | string | | | `a_sub_text` | string | | 返回:bool ## `dateTimeToString(format, date_time)` 根据参数Format给定的格式串将参数DateTime转换成字符串类型存到参数Result中,其中格式串的使用参照FormaTDateTime函数 | 参数 | 类型 | 说明 | | ----------- | -------- | ------------------------------- | | `format` | any | 字符串,格式串 | | `date_time` | datetime | TDateTime类型,需转换的日期时间 | 返回:string ## `eval(exp)` 表达式求值。返回,表达式的值。字符串表达式中支持return。TSL.EXE支持 tsl -eval "echo 100"的模式直接调用TSL语句。 表达式允许在跨函数中传导引用参数和变量 | 参数 | 类型 | 说明 | | ----- | ------------ | ----------------------------------------------------------------------------- | | `exp` | TExpression> | 表达式类型,要计算的表达式。函数表达式直接执行,字符串表达式需在字符串前加&。 | 返回:any ## `fHeader()` 字符串,TS-OPS服务注册时需要指定的头部信息,比如TS-OPS-CALL等。 类型:读写 返回:string ## `fUrl()` 字符串,TS-OPS服务注册地址 类型:读写 返回:string ## `importjsonstring(json)` 将json串转化为天软数据类型。 对大无符号数据会自动转换为长整型(INT64) 注意:输入的字符串应是ASCII编码的。因为JSON标准使用UTF8编码,所以请先使用天软Utf8ToAnsi将UTF8编码的字符串缓缓为ASCII编码。可参考下面的例程。 | 参数 | 类型 | 说明 | | ------ | ------ | ---------------- | | `json` | string | 字符串,json串。 | 返回:any ## `leftStr(text, num_chars)` 返回字符串从开始向左数Num_Chars个字符组成的字符串,支持多字节语言,一个汉字当成一个字符。 | 参数 | 类型 | 说明 | | ----------- | ------ | -------- | | `text` | string | 字符串 | | `num_chars` | int | 字符个数 | 返回:string ## `ord(value)` 如果是STRING类型返回value\[1\]的ASCII序号,就是value字符串的第一个字符的ASCII序号,如果为WIDESTRING,则为UNICODE码。 | 参数 | 类型 | 说明 | | ------- | ------ | ------------ | | `value` | string | WideString\\ | 返回:int ## `reversebString(s)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ---- | ------ | ---- | | `s` | string | | 返回:string ## 发音相关函数 ## `rightStr(text, num_chars)` 前N个字符;基于所指定的字符数返回文本字符串中的最后一个或后几个字符; | 参数 | 类型 | 说明 | | ----------- | ------ | -------- | | `text` | string | 字符串 | | `num_chars` | int | 字符个数 | 返回:string ## `setChar(s, index, ch)` 设置字符串/二进制流中相应位置的字符。Char为0-255之间的整数类型 | 参数 | 类型 | 说明 | | ------- | ------ | ------------------- | | `s` | string | 字符串/二进制 | | `index` | any | 整数 | | `ch` | string | 0-225之间的整数类型 | 返回:string ## `setLikeFlag(flag, return_value)` 设置Like操作符号的正则表达式默认控制状态。默认值为1。 | 参数 | 类型 | 说明 | | -------------- | ---- | ------------------------------------------------------------------------------------- | | `flag` | int | 正则表达式控制模式,取值如下: 若同时设置多个模式,则设置参数值为其对应模式值之和即可 | | `return_value` | int | 匹配成功则返回真,否则返回假 | 返回:bool ## `soundexWord(a_text)` 发音相关函数相关函数。 | 参数 | 类型 | 说明 | | -------- | ------ | ---- | | `a_text` | string | | 返回:int ## `str2Array(value, aps)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ------- | ------ | ---- | | `value` | string | | | `aps` | string | | 返回:array ## `string(value)` 将数据转换为字符串。 | 参数 | 类型 | 说明 | | ------- | ------ | -------- | | `value` | string | 输入数据 | 返回:string ## `strSubscriptTableToNormal(t, fn)` 字符串下标数组-->索引下标数组。 | 参数 | 类型 | 说明 | | ---- | ------ | ---------------------------------------- | | `t` | array | 二维数组,数据 | | `fn` | string | 字符串或数值,行标变成数据之后使用的列名 | 返回:array ## `strToBool(s)` 如果S为'0',返回假,如果是非0的数字串,则返回真 | 参数 | 类型 | 说明 | | ---- | ------ | ---------- | | `s` | string | 数字字符串 | 返回:bool ## `strToCurr(s)` 将数字字符串S转换成实数返回,字符串中不允许有千分号,最大有效小数位为4位,超过四位小数的处理在不同的版本处理可能存在不一致的地方。 | 参数 | 类型 | 说明 | | ---- | ------ | ------ | | `s` | string | 字符串 | 返回:float ## `strToDate(s)` 将字符串S转换成TDateTime类型的日期 | 参数 | 类型 | 说明 | | ---- | ------ | ---------------------------------------- | | `s` | string | 字符串,日期的字符串类型,如"2014-01-17" | 返回:datetime ## `strToDateTime(s)` 将字符串S转换成TDateTime类型的日期和时间 | 参数 | 类型 | 说明 | | ---- | ------ | ----------------------------------------------------- | | `s` | string | 字符串,日期时间的字符串类型,如"2014-01-17 10:00:00" | 返回:datetime ## `strToFloat(s)` 将数字字符串S转换成实数返回,字符串中不允许有千分号 | 参数 | 类型 | 说明 | | ---- | ------ | ------ | | `s` | string | 字符串 | 返回:float ## `strToInt(s)` 将字符串转换为整数。 支持各种进制格式字符串的转换(如二进制、十六进制等)。若只转换十进制格式字符串,可使用函数FAQ:DecToInt | 参数 | 类型 | 说明 | | ---- | ------ | ------------------------ | | `s` | string | 字符串。需转换的字符串。 | 返回:int ## `strToInt32(s)` 将字符串转换为32位整数。 支持各种进制格式字符串的转换(如二进制、十六进制等)。若只转换十进制格式字符串,可使用函数FAQ:DecToInt32 | 参数 | 类型 | 说明 | | ---- | ------ | ------------------------ | | `s` | string | 字符串。需转换的字符串。 | 返回:int ## `strToInt64(s)` 将字符串转换为64位整数。 支持各种进制格式字符串的转换(如二进制、十六进制等)。若只转换十进制格式字符串,可使用函数FAQ:DecToInt64 | 参数 | 类型 | 说明 | | ---- | ------ | ------------------------ | | `s` | string | 字符串。需转换的字符串。 | 返回:int ## `strToTime(s)` 将字符串S转换成TDateTime类型的时间 | 参数 | 类型 | 说明 | | ---- | ------ | -------------------------------------- | | `s` | string | 字符串,时间的字符串类型,如"15:20:34" | 返回:datetime ## `tryStrToTime(s)` 将字符串S转换成TDateTime类型的时间并存到参数Value中。如果转换成功,则返回真,否则返回假 | 参数 | 类型 | 说明 | | ---- | ------ | ----------------------------------------------------------------------- | | `s` | string | 字符串,日期的字符串类型,如"2014-01-17";Default:TDateTime类型,默认值 | 返回:bool ## `unUnicodeEsc2(s)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ---- | ------ | ---- | | `s` | string | | 返回:string ## `unUnicodeEsc2W(s)` 字符串相关函数。 | 参数 | 类型 | 说明 | | ---- | ------ | ---- | | `s` | string | | 返回:string ## `writeFile(data_type, alias, file_name, pos, length, data)` 将数据写到本地文件。文件格式可以是字符流、整数流、实数流、字节流等。 多个线程同时写入时无需加锁等操作,仅需将位置设置为-1则可保障追加模式,如果调用失败,可检测返回值为字符串后然后重试即可。(当多线程尝试打开同一个文件写入时会返回错误) | 参数 | 类型 | 说明 | | ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `data_type` | int | 整数类型。参考文件读写类型函数。 | | `alias` | string | 字符串类型。参考目录别名。 | | `file_name` | int | 字符串类型。文件名称。 | | `pos` | int | 整数类型。写文件的偏移位置,执行结束后将返回新的位置。 如果设为-1,则每次导出到文件的末尾(不会覆盖已有的数据)。 如果设为0,则从文件第一个位置开始导出(会覆盖掉原有位置的数据)。 如果设为1,则从文件的第二个位置开始导出,同0会覆盖,2,3,…依此类推。 如果设为-2,-3-4….,则如同设为0的效果。 | | `length` | any | 整数类型。写入的数据长度。 | | `data` | string | 写入的数据。如果文件类型不是rwRaw或者rwBinary则Data为一个指定类型的数组,否则,为需要写入的字符串。 | 返回:string ## 字符串与格式转换函数 ## `floatToStrEx(r, n)` 浮点->字符串 | 参数 | 类型 | 说明 | | ---- | ------- | ------------------------ | | `r` | real | 实数 | | `n` | integer | 整型数据,保留的小数位数 | 返回:string ### 示例 ```tsl return floatToStrEx (12.6578, 2); // 结果:’ 12.66’ ``` ## `textToHtml(src)` 将字符串转化为HTML标准格式的串 | 参数 | 类型 | 说明 | | ----- | ------ | ---------- | | `src` | string | 字符串类型 | 返回:string ### 示例 ```tsl src := "The First LETTER won\'t be replaced by \'one\', but the Second letter will."; return textToHtml(src); // 结果: The First LETTER won't be replaced by 'one', but the Second letter will. ``` ## `textToUrl(a_src)` 将字符串转化为URL标准格式的串 | 参数 | 类型 | 说明 | | ------- | ------ | ---------- | | `a_src` | string | 字符串类型 | 返回:string ### 示例 ```tsl a_src := "#abcd 10"; return textToUrl(a_src); // 结果:%23abcd%20%2010 ``` ## `htmlToText(src)` 将HTML标准格式的串转化为文本字符串 | 参数 | 类型 | 说明 | | ----- | ------ | ---------- | | `src` | string | 字符串类型 | 返回:string ### 示例 ```tsl Src := "The First LETTER won't be replaced by 'one', but the Second letter will."; 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->s,e->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