Files
playbook/skills/tsl-api-reference/references/codegen/builtin/base/string.md
T
csh 1f19954dd7 ♻️ refactor(tsl-api-reference): reorganize function reference pages
Move runtime and document pages into their correct scope, remove obsolete pending entries, and regenerate the function index.\nUpdate agent test guidance and API skill routing to match the new reference layout.
2026-07-20 09:08:38 +08:00

82 KiB
Raw Blame History

Builtin - 基础 / 字符串

strCmp(s1, s2)

比较s1与s2的ascii码值的大小,若s1较大,则返回正数,若相等,则返回0,若s2较大,则返回负数。返回值的绝对值大小无实际意义。

参数 类型 说明
s1 string 字符串
s2 string 字符串

返回:integer

差异说明 返回值的绝对值大小无实际意义,在不同操作系统中,其绝对值大小也表现不一。 比如,对比字符或ASCII码的比较,在Linux中,返回ASCII码相差的值,Windows中只返回-1,0,1等代表大小,但是符号是一致的。 如strcmp(#97, #100); // Windows返回-1Linux中返回-3。

示例

a := strCmp("arr", "arry");
return a; //
// 输出:-1

format(formatstr, v1, v2, v3)

返回根据 formatstr 设定的格式将 v1,v2,v3,… 参数连成字符串返回。

在占位计算时,Format 把一个汉字当作一个位置;如需把一个汉字当作两个位置,请用 AnsiFormat(参数定义与 Format 完全一致)。

参数 类型 说明
formatstr string 格式串,由基本文本与 % 占位符组成,写法见下文
v1, v2, v3 any 依次对应各占位符的值,个数不限

格式串由基本文本字符和占位符组成:基本文字按原样显示,占位符(由 % 标出)依次对应 v1,v2,v3,… 各参数。单个占位符的完整写法(各段紧挨、顺序固定、中间不能有空格):

%[index:][-][width][.prec]TYPE

[] 内为可选段,其中 index 后的冒号 :prec 前的点 . 都是字面量,写在格式串里。各段含义:

含义
index: 参数索引 + 冒号,指明用第几个参数(从 0 开始);省略时按出现顺序依次取参数
- 向左对齐(省略则右对齐、左侧补空格)
width 最小显示宽度(字符数);实际长度不足时补空格
.prec 点 + 精度;对 f/e/n/m 表示小数位数,对 g 表示有效位数
TYPE 输出类型字母(见下表),必填

拆解示例:%2:-8.2f = 用第 2 个参数(2:)、左对齐(-)、最小宽度 8(8)、保留 2 位小数(.2)、浮点输出(f)。

补充规则:

  • TYPE 字母大小写等价%f%F 相同,%d%D 相同)。
  • 输出字面量 %%%(如 format("%d%%", 50)50%)。
  • 省略 index: 时,占位符个数应与参数个数对应;用了 index: 则可任意引用、重复引用参数。

TYPE% 后的字母)指定输出数据类型;若与对应参数类型不匹配将产生运行时错误:

符号 含义
D decimal 整型值 → 十进制数字字符串
X hexadecimal 整型值 → 十六进制数字字符串
S String 拷贝字符串/字符/字符指针值到输出字符串
E exponential 浮点值 → 指数表示字符串
F floating 浮点值 → 浮点表示字符串
G general 浮点值 → 最短的十进制字符串(浮点或指数)
N number 浮点值 → 带千位分隔符的浮点值
m money 浮点值 → 现金数量表示字符串(Currency 类型)

注:新一代 tsl 语言中 %f%g%n 支持复数。

返回:string

示例

范例00:(基础用法 —— 顺序占位、%s 字符串、%% 转义)

return format("Name: %s, Age: %d, Rate: %d%%", "Tom", 18, 50);
// 输出字符串:Name: Tom, Age: 18, Rate: 50%

范例01:(D 和X的使用范例)

// 指定前2个数值转化为十进制数字字符串,第3个整数转化成十六进制字符串,3个数值必须是整数。
// 第2个转化%-5d:由于3只有1位,需要左对齐,则在右边添加4位空格
return format('%d,%-5d,%X', 4, 3, 12);
// 输出字符串:4,3  ,C

范例02:(E的使用范例)

// .1表示后面的小数位的精度。注意,v必须是一个浮点数,比如1234400.0,如果是1234400则被认为是整数,执行函数报错
return format("%.1E", 1234400.0);
// 输出字符串:1.2E+006

范例03:(F的使用范例)

return format("%.1f", 1234400.56789);
// 输出字符串: 1234400.6

范例04:(G的使用范例)

return format("%G", 1.2E+006);
// 输出字符串:1200000

范例05:(N的使用范例)

return format("%.1N", 1234400.56789);
// 输出字符串:1,234,400.6

范例06:(M的使用范例)

return format("%.1M", 1234400.56789);
// 输出字符串:¥1,234,400.6

范例七:(参数的索引)

return format('%2:d,%1:5d,%0:X', 14, 3, 12);
// 输出字符串:12,  3,E

setLength(s, new_length)

设置字符串或者Matrix或者二进制类型S的长度为NewLength

参数 类型 说明
s string|matrix|binary 字符串或者MATRIX或者二进制类型
new_length integer 整数,长度

返回:integer

示例

// 相当于截取了源串S的前NewLength个字符
s := 'thankyou';
setLength(s, 5);
return s;
// 输出字符串:thank

compareText(s1, s2)

字符串比较,如果S1大于S2,则返回正数,如果相等,返回0,否则返回负数

参数 类型 说明
s1 string 字符串,比较字符串1
s2 string 字符串,比较字符串2

返回:integer

示例

范例01

return compareText("SZ000002", "SZ000001"); // 输出:1

范例02

return compareText("SZ000001", "sz000001"); // 输出:0

范例03

return compareText("万科A", "万科A"); // 输出:-65248

copy(s, index, count)

字符串拷贝函数,将字符串S的第Index个字符开始,拷贝出Count个字符组成字符串返回,或者说取S的子字符串出来。如果Index大于字符串长度,则返回空字符串,如果拷贝的内容超过了字符串长度,则只返回从第Index个字符到S字符串结尾的部分

参数 类型 说明
s string 字符串类型,源串
index integer 整数,开始字符,字符串位置从1计起
count integer 整数,字符个数

返回:string

示例

a := copy('thank you', 3, 6);
return a; // 输出字符串:ank yo

upperCase(s)

将字符串S转换成大写并返回

参数 类型 说明
s string 字符串

返回:string

示例

return upperCase("sz000001");
// 输出:SZ000001

leftBStr(a_text, a_count)

返回Atext字符串从开始向左数ACount个字符组成的字符串。

参数 类型 说明
a_text string 字符串,源串
a_count integer 整数,截取字符串的个数

返回:string

示例

arr := leftBStr("i am a student", 4);
return arr; // 输出字符串:i am

rightBStr(a_text, a_count)

返回Atext字符串从结束向右数ACount个字符组成的字符串。

参数 类型 说明
a_text string 字符串,源串
a_count integer 整数,截取字符串的个数

返回:string

示例

arr := rightBStr("i am a student", 4);
return arr; // 输出:dent

midBStr(a_text, astart, a_count)

返回Atext字符串从Astart个字符的位置开始数出ACount个字符组成的字符串,天软字符串下标从1开始。

参数 类型 说明
a_text string 字符串,源串
astart integer 整数,开始位置,从1开始数起
a_count integer 整数,截取长度

返回:string

示例

arr := midBStr("i am a student", 6, 6);
return arr; // 输出: a stud

getFormatLocalCode()

获得当前Format等函数默认使用的地区区域码,-1为默认格式,0为当前系统所属地区码。

返回:integer

示例

setFormatLocalCode(0);
return getFormatLocalCode(); // 输出:0

compareStr(s1, s2)

字符串比较,如果S1大于S2,则返回正数,如果相等,返回0,否则返回负数

参数 类型 说明
s1 string 字符串,比较字符1
s2 string 字符串,比较字符2

返回:integer

示例

return compareStr("万科A", "万科A");
// 输出:-65248

trim(s)

去掉字符串首尾空格以及控制字符的字符串

参数 类型 说明
s string 字符串

返回:string

示例

return trim(" Hello! \r\n Tinysoft  ");
{输出字符串(把Hello前的空格以及Tinysoft后的空格删除,并把\r\n转义)
"Hello!
Tinysoft"
}

sameText(s1, s2)

返回字符串S1S2是否相等

参数 类型 说明
s1 string 字符串,比较字符串1
s2 string 字符串,比较字符串2

返回:bool

示例

return sameText("SZ000001", "sz000001"); // 输出:1
// 输出:1

appendStr(dest, s)

将字符串S加到Dest上,并返回到Dest参数中

参数 类型 说明
dest string 字符串,源串
s string 字符串,添加串

返回:void

示例

s := "申万";
appendStr(s, "采掘");
return s; // 输出:申万采掘

getChar(s, index)

取字符串/二进制流中相应位置的ascii码。Char为0-255之间的整数类型

参数 类型 说明
s string 字符串/二进制,源串
index integer 整数,取数位置

返回:char

示例

arr := getChar("i am a student", 9);
return arr; // 输出: 116

lowerCase(s)

将字符串S转换成小写并返回

参数 类型 说明
s string 字符串

返回:string

示例

return lowerCase("万科A");
// 输出: 万科a

val(s, v, code)

将一个字符串S转换成实数V,如果成功,则Code置0,否则Code表示转换不成功的字符的位置

参数 类型 说明
s string 字符串
v real 实数,输出值
code integer 整数,输出值

返回:any

示例

范例一:

val("1.1424E+0002", v, code);
return v; // 输出:114.24

范例二:

// 返回错误信息:在转换到第6位字符时不成功。
val("1.142aE+0002", v, code);
return array(v, code); // 输出:array(1.142,6)

trimRight(s)

去掉尾空格以及控制字符的字符串

参数 类型 说明
s string 字符串

返回:string

示例

return trimRight("Hello! \r\n Tinysoft  ");
{输出字符串
" Hello!
Tinysoft "
}

trimLeft(s)

去掉首空格以及控制字符的字符串

参数 类型 说明
s string 字符串

返回:string

示例

return trimLeft("Hello! \r\n Tinysoft  ");
{输出字符串
"Hello!
Tinysoft  "
}

strToIntDef(s, default)

将字符串转换为整数。如果转换失败,则返回Default值。

参数 类型 说明
s string 字符串。需转换的字符串
default integer 整数。转换失败时返回的默认值

返回:integer

示例

范例01

return strToIntDef("12", 1); // 输出: 12

范例02

return strToIntDef("test", 1); // 输出: 1

范例03

return strToIntDef("0x12", 1); // 输出:18

formatFloat(format, value)

将实数Value根据参数Format设定格式转换成字符串返回

参数 类型 说明
format string 字符串,格式串
value real 实数

返回:string

示例

return formatFloat('0.000E+00', 23224); // 科学计数
// 输出字符串:"2.322E+04"
return formatFloat('##,###.00', 123); // 千分位 + 两位小数
// 输出字符串:"123.00"
return formatFloat('00,000.00', 123); // 零填充
// 输出字符串:"00,123.00"

strToCurrDef(s, default)

将数字字符串S转换成实数返回,字符串中不允许有千分号。如果转换没有成功,则返回参数Default指定的默认值。小数位数与设置的系统参数相关,但是最大有效小数位为4位,超过四位小数的处理在不同的版本处理可能存在不一致的地方。

参数 类型 说明
s string 字符串
default currency 实数,默认值

返回:currency

示例

return strToCurrDef('1321.233', 3);
// 输出:1321.233

strToFloatDef(s, default)

将数字字符串S转换成实数返回,字符串中不允许有千分号。如果转换没有成功,则返回参数Default指定的默认值

参数 类型 说明
s string 字符串
default real 实数,默认值

返回:real

示例

return strToFloatDef('a', 2);
// 输出:2

tryStrToInt(s, value)

将字符串转换为32位整数。若转换成功,转换值通过Value输出。

参数 类型 说明
s string 字符串。需转换的字符串
value integer 变参。转换成功,为转换后的整数;否则,为NIL值。

返回:bool

示例

范例01:转换成功

ret := tryStrToInt("12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: 12

范例02:转换失败

ret := tryStrToInt("test", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: "转换失败!"

范例03:十六进制格式字符串的转换

ret := tryStrToInt("0x12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出:18

floatToStr(value)

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

参数 类型 说明
value real 实数

返回:string

示例

范例01

return floatToStr(23.4);
// 输出字符串:"23.4"

范例02

return floatToStr(1E15);
// 大数量级数据,输出:"1E15"

tryStrToFloat(s, value)

将数字字符串S转换成实数存到参数Value中,字符串中不允许有千分号。如果转换成功返回真,否则返回假。

参数 类型 说明
s string 字符串,需要转换的数字字符串
value real 实数,输出值

返回:bool

示例

tryStrToFloat('321.23', s);
return s; // 输出:321.23

formatCurr(format, value)

将实数Value根据参数Format设定格式转换成字符串返回

参数 类型 说明
format string 字符串,格式串
value currency 实数

返回:string

示例

return formatCurr('0.000E+00', 232.24);
// 输出:2.322E+02

tryStrToCurr(s, value)

将数字字符串S转换成实数存到参数Value中,如果转换成功返回真,否则返回假。最大有效小数位为4位,超过四位小数的处理在不同的版本处理可能存在不一致的地方。

参数 类型 说明
s string 字符串
value currency 实数

返回:bool

示例

tryStrToCurr('1321.2333', s);
return s;
// 输出:1321.2333

boolToStr(s)

将布尔型转换成字符串类型并返回。参数UseBoolStrs一般为假,如果B为真,函数返回'-1',如果B为假,返回'0'。若想返回’True’与’False’的结果可用BoolToStr2实现。

参数 类型 说明
s string 数字字符串Default:布尔型,一般为假

返回:string

示例

return boolToStr(1>2, 0);
// 输出:0

currToStr(value)

将Currency型的实数转换成字符串类型返回

参数 类型 说明
value currency 实数

返回:string

示例

return currToStr(23.24);
// 输出字符串:"23.24"

tryStrToBool(s, value)

如果S为'0',则参数Value置为假,如果S是非0的数字串,则参数Value置为真。如果转换成功,函数返回真,否则返回假

参数 类型 说明
s string 数字字符串
value bool 布尔型,输出值

返回:bool

示例

tryStrToBool("12", s);
return s; // 输出: 1

isValidIdent(ident)

返回字符串Ident是否可以作为一个合法的标识符号。

参数 类型 说明
ident string 字符串

返回:bool

示例

return isValidIdent('a0ffh2');
// 输出: 1

strToBoolDef(s, default)

如果S为'0',返回假,如果是非0的数字串,则返回真,如果转换不成功,则返回Default指定的值

参数 类型 说明
s string 数字字符串
default bool 整数,默认返回值

返回:bool

示例

return strToBoolDef("12", 3);
// 输出: 1

intToStr(value)

整数Value转换成字符串

参数 类型 说明
value integer 整数

返回:string

示例

return intToStr(43);
// 输出:"43"

sysEncodecryptStr(s, t)

对字符串进行加密。

参数 类型 说明
s string 字符串,需要被加密的源串
t integer 整数,选择加密类型

返回:string

示例

s := "Server=127.0.0.1;Database=tsBase;Uid=TinySoft;Pwd=admin;";
encode_s := sysEncodecryptStr(s, 0);
return encode_s;
// 返回字符串:_ENCODE_3A364432572518291B2C02321C2C0233084C2D59385A3B482D10641755344722194C25417C28412F56056A0C78431364003D5C38553C5269

strToInt64Def(s, default)

将字符串转换为64位整数。如果转换失败,则返回Default值。

参数 类型 说明
s string 字符串。需转换的字符串
default int64 整数。转换失败时返回的默认值

返回:int64

示例

范例01

return strToInt64Def("12", 1); // 输出: 12L

范例02

return strToInt64Def("test", 1); // 输出: 1L

范例03

return strToInt64Def("0x12", 1); // 输出:18L

tryStrToInt64(s, value)

将字符串转换为64位整数。若转换成功,转换值通过Value输出。

参数 类型 说明
s string 字符串。需转换的字符串
value int64|nil 变参。转换成功,为转换后的整数;否则,为NIL值。

返回:bool

示例

范例01:转换成功

ret := tryStrToInt64("12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: 12L

范例02:转换失败

ret := tryStrToInt64("test", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: "转换失败!"

范例03:十六进制格式字符串的转换

ret := tryStrToInt64("0x12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出:18L

strToInt32Def(s, default)

将字符串转换为32位整数。如果转换失败,则返回Default值。

参数 类型 说明
s string 字符串。需转换的字符串
default integer 整数。转换失败时返回的默认值

返回:integer

示例

范例01

return strToInt32Def("12", 1); // 输出: 12

范例02

return strToInt32Def("test", 1); // 输出: 1

范例03

return strToInt32Def("0x12", 1); // 输出:18

tryStrToInt32(s, value)

将字符串转换为32位整数。若转换成功,转换值通过Value输出。

参数 类型 说明
s string 字符串。需转换的字符串
value integer|nil 变参。转换成功,为转换后的整数;否则,为NIL值。

返回:bool

示例

范例01:转换成功

ret := tryStrToInt32("12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: 12

范例02:转换失败

ret := tryStrToInt32("test", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出: "转换失败!"

范例03:十六进制格式字符串的转换

ret := tryStrToInt32("0x12", value);
if ret then
    return value;
else
    return "转换失败!";
// 输出:18

ansiContainsText(a_text, a_sub_text)

判别一个字符串Atext是否包含另一个字符串ASubText。如果包含,就返回真,否则返回假。

参数 类型 说明
a_text string 字符串类型,源串
a_sub_text string 字符串类型,子串

返回:bool

示例

text := 'abcdefg';
return ansiContainsText(text, 'Abcd');
// 输出:1,包含

ansiStartsText(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的开头。如果ASubText 是Atext的开头,就返回真,否则返回假。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return ansiStartsText('Abc', text);
// 输出:1

ansiEndsText(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的结尾。如果ASubText 是Atext的结尾,就返回真,否则返回假。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return ansiEndsText('Efg', text);
// 输出:1

ansiContainsStr(a_text, a_sub_text)

判定指定的字符串AsubTexts是否是Atext字符串的子串。返回布尔型真假值,字符串AsubTexts是Atext字符串的子串,就返回真,否则返回假

参数 类型 说明
a_text string 字符串类型,源串
a_sub_text string 字符串型,子串

返回:bool

示例

a_text := 'abcdefg';
return ansiContainsStr(a_text, 'Bcd');
// 输出:1

ansiStartsStr(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的开头。如果ASubText 是Atext的开头,就返回真,否则返回假。与AnsiStartsText函数不同,字符串的匹配是大小写敏感的

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

atext := 'abcdefg';
return ansiStartsStr('abcd', atext);
// 输出:1

ansiEndsStr(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的结尾。如果ASubText 是Atext的结尾,就返回真,否则返回假。与AnsiEndsText函数不同,字符串的匹配是大小写敏感的

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return ansiEndsStr('efg', text);
// 输出:1

stuffString(a_text, a_start, alength, a_sub_text)

字符串重组函数。将指定的字符串Atext的第AStart个字符开始以后的ALength个字符用AsubText字符串替换掉,得到一个新的字符串返回。

参数 类型 说明
a_text string 字符串类型,源串。
a_start integer 整数,表明从第几个字符串开始被替换,1代表第一个字符,2代表第2个,以次类推
alength integer 非负整数,表明替换几个连续的字符,如果为0,则直接插入AsubText字符串。
a_sub_text string 字符串类型,替换原的内容

返回:string

示例

atext := "Here will be instead by \'HERE\'";
a_sub_text := "HERE";
return stuffString(atext, 1, 4, a_sub_text);
// 输出:HERE will be instead by HERE

ansiReplaceText(a_text, a_from_text, a_to_text)

字符串的部分替换。将一个字符串Atext的其中的AFromText部分替换为AToText部分。本函数支持多语言。

参数 类型 说明
a_text string 字符串类型,源串
a_from_text string 字符串类型,被替换内容
a_to_text string 字符串类型,替换内容

返回:string

示例

a_text := "First will be instead by \'Final\'";
a_from_text := "First";
a_to_text := "FINAL";
return ansiReplaceText(a_text, a_from_text, a_to_text);
// 输出字符串:FINALwill be instead by 'Final'
// 输出:Final will be instead by F

ansiReplaceStr(a_text, a_from_text, a_to_text)

字符串的部分替换。将一个字符串Atext的其中的AFromText部分替换为AToText部分。与AnsiEndsText函数不同,字符串的匹配是大小写敏感的。本函数支持多语言。

参数 类型 说明
a_text string 字符串类型,源串
a_from_text string 字符串类型,被替换内容
a_to_text string 字符串类型,替换内容

返回:string

示例

a_text := "Big will be replaced by \'BIG\', but big won\'t be replaced by \'BIG\'.";
a_from_text := "Big";
a_to_text := "BIG";
return ansiReplaceStr(a_text, a_from_text, a_to_text);
// 输出:BIG will be replaced by 'BIG', but big won't be replaced by 'BIG'.

replaceText(a_text, a_from_text, a_to_text)

字符串的部分替换。将一个字符串Atext中第一次遍历时存在的AFromText全部替换为AToText部分。本函数不支持多语言。

参数 类型 说明
a_text string 字符串类型,源串
a_from_text string 字符串类型,被替换内容
a_to_text string 字符串类型,替换内容

返回:string

示例

a_text := "The first letter will be replaced by \'one\', but the second letter won't.";
a_from_text := "letter";
a_to_text := "one";
return replaceText(a_text, a_from_text, a_to_text);
// 输出:The first one will be replaced by 'one', but the second one won't.n

replaceStr(a_text, a_from_text, a_to_text)

字符串的部分替换。将一个字符串Atext中第一次遍历时存在的AFromText全部替换为AToText部分。与AnsiEndsText函数不同,字符串的匹配是大小写敏感的。本函数不支持多语言。

参数 类型 说明
a_text string 字符串类型,源串
a_from_text string 字符串类型,被替换内容
a_to_text string 字符串类型,替换内容

返回:string

示例

a_text := "The First LETTER in uppercase won\'t be replaced by \'one\', but the Second letter in lowercase will.";
a_from_text := "letter";
a_to_text := "one";
return replaceStr(a_text, a_from_text, a_to_text);
// 输出:The First LETTER in uppercase won't be replaced by 'one', but the Second one in lowercase will.

reverseString(s)

返回字符串S的反序

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

返回:string

示例

return reverseString('abcde1234');
// 返回字符串:4321edcba

dupeString(a_text, a_count)

返回将指定的字符串AText重复ACount次后的字符串

参数 类型 说明
a_text string 字符串类型,源串
a_count integer 整数,重复的次数

返回:string

示例

s := dupeString('Ha', 5);
return s;
// 输出:表示将S的值变为'HaHaHaHaHa'

startsText(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的开头。如果ASubText 是Atext的开头,就返回真,否则返回假。可以处理非MBCS的原始字符串。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return startsText('Abc', text);
// 输出:1
// 差异说明:对空字符串,Windows 判定为 1、Linux 为 0(如 startsText("", "A"));其它表现无差别。

endsText(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的结尾。如果ASubText 是Atext的结尾,就返回真,否则返回假。可以处理非MBCS的原始字符串。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return endsText('Efg', text);
// 输出:1
// 差异说明:对空字符串,Windows 判定为 1、Linux 为 0(如 endsText("", "A"));其它表现无差别。

containsStr(a_text, a_sub_text)

判定指定的字符串AsubTexts是否是Atext字符串的子串。返回布尔型真假值,字符串AsubTexts是Atext字符串的子串,就返回真,否则返回假。可以处理非MBCS的原始字符串。

参数 类型 说明
a_text string 字符串类型,源串
a_sub_text string 字符串型,子串

返回:bool

示例

a := '2020Tinysoft 天软';
b := 'tinysoft';
c := 'Tinysoft';
return array(containsStr(a, b), containsStr(a, c));
// 输出:array(0,1)

startsStr(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的开头。如果ASubText 是Atext的开头,就返回真,否则返回假。可以处理非MBCS的原始字符串。与StartsText函数不同,字符串的匹配是大小写敏感的。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

atext := 'abcdefg';
return startsStr('abcd', atext);
// 输出:1

endsStr(a_sub_text, a_text)

判别一个字符串ASubText是否是另一个字符串AText的结尾。如果ASubText 是Atext的结尾,就返回真,否则返回假。可以处理非MBCS的原始字符串。与EndsText函数不同,字符串的匹配是大小写敏感的。

参数 类型 说明
a_sub_text string 字符串类型,子串
a_text string 字符串类型,源串

返回:bool

示例

text := 'abcdefg';
return endsStr('efg', text);
// 输出:1

stuffbString(a_text, a_star, alength, a_sub_text)

字符串重组函数。将指定的字符串Atext的第AStart个字符开始以后的ALength个字符用AsubText字符串替换掉,得到一个新的字符串返回。可以处理非MBCS的原始字符串。一个汉字两个字节。

参数 类型 说明
a_text string 字符串类型,源串。
a_star integer 整数,表明从第几个字节开始被替换,1代表第一个字节,2代表第2个,以次类推
alength integer 非负整数,表明替换几个连续的字节,如果为0,则直接插入AsubText字符串
a_sub_text string 字符串类型,替换原的内容

返回:string

示例

atext := "Here will be instead by \'HERE\'";
a_sub_text := "HERE";
return stuffbString(atext, 1, 4, a_sub_text);
// 输出:HERE will be instead by HERE

soundEx(a_text, alength)

返回一个字符串,这个字符串是用来表明AText的发音的。通过转化为发音特征的字符串(SoundEx Codes),可以比较两个字符串是否发音相同或近似。Alength是声明最大的发音长度,一般定义为4

参数 类型 说明
a_text string 字符串数组,发音源串
alength integer 整数,且大于1

返回:string

示例

test_str1 := "sun";
s1 := soundEx(test_str1, 4);
test_str2 := "sum";
s2 := soundEx(test_str2, 4);
test_str3 := "test";
s3 := soundEx(test_str3, 4);
return array(s1, s2, s3);
// 输出:array("S500","S500","T230")

soundexInt(a_text, alength)

返回表示AText的发音的整数。整数是根据通过发音特征的字符串(SoundEx Codes)唯一转化来的,和字符串长度无关。

参数 类型 说明
a_text string 字符串数组,源串
alength integer 整数,在1和8之间,一般定义为4

返回:integer

示例

test_str1 := "sun";
s1 := soundexInt(test_str1, 4);
test_str2 := "sum";
s2 := soundexInt(test_str2, 4);
test_str3 := "test";
s3 := soundexInt(test_str3, 4);
return array(s1, s2, s3);
// 输出:array(208597,208597,218929)

soundexProc(a_text, a_other)

比较两个字符串的发音是否足够相似。根据AText和Aother转成发音码以后比较前面四个发音码。如果两个发音码相同,返回真,否则返回假

参数 类型 说明
a_text string 字符串,比较发音字符串1
a_other string 字符串,比较发音字符串1

返回:bool

示例

范例01

return soundexProc("sun", "sum");
// 输出:1

范例02

return soundexProc("sun", "fun");
// 输出:0

范例03

return soundexProc("transaction", "transact");
// 输出:1

ansiResemblesText(a_text, a_other)

判别一个字符串Atext是否相似于另一个字符串。如果足够相似,就返回真,否则返回假。

参数 类型 说明
a_text string 字符串类型
a_other string 字符串类型

返回:bool

示例

范例01

return ansiResemblesText("sun", "sum");
// 输出:1

范例02

return ansiResemblesText("sun", "fun");
// 输出:0

范例03

return ansiResemblesText("transaction", "transact");
// 输出:1

getLikeFlag()

返回Like操作符号的正则表达式的默认控制状态。即获得SetLikeFlag设置的状态,默认为1。

返回:integer

示例

s := "ParseRegExpr 2011 \r\n ShenZhenTinysoft (TSL)";
reg := "(\\d+).*(tinysoft)";
setLikeFlag(0b0001+0x0010); // 大小写无关+使 '.' 特殊字符匹配任意字符
r := s like reg;
return getLikeFlag(); // 获取当前正则控制符状态
// 返回17

setLikeFlag(flag)

设置Like操作符号的正则表达式默认控制状态。默认值为1。

参数 类型 说明
flag integer 正则表达式控制模式。

控制模式取值:

取值 说明
0b0001 大小写无关
0b0010 多行开关打开
0b0100 不理会^标志
0b1000 不理会$标志
0x0010 REG_DOTALL;使 '.' 特殊字符匹配任意字符,包括换行符;如果没有这个标识,'.' 将匹配 除去 换行符以外的任意字符。
0x0100 REG_NOTEMPTY;禁止匹配空字符串
0x0200 REG_UNGREEDY;非贪婪模式

返回:integer

示例

s := "ParseRegExpr 2011 \r\n ShenZhenTinysoft (TSL)";
reg := "(\\d+).*(tinysoft)";
setLikeFlag(0b0001+0x0010); // 大小写无关+使 '.' 特殊字符匹配任意字符
return s like reg;
// 输出:1

nextCharIndex(s, index)

返回指定字符的开始字节的下一个字符的字节开始位置。

参数 类型 说明
s string 字符串,源串
index integer 整数,字符的开始字节位置

返回:integer

示例

// ‘软’的开始字节是3,下一个字符是‘T’,‘T’的开始字节位置是5
s := "天软Tinysoft Statistical analysis Language";
return nextCharIndex(s, 3);
// 输出:5

ansiToUtf8(s)

转换为UTF8编码的字符串。

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

返回:string

示例

return  ansiToUtf8('2011 tinysoft天软科技');
// 返回字符串:2011 tinysoft天软科技

utf8ToAnsi(s)

UTF8串转为Ansi串。

参数 类型 说明
s string 字符串,UTF8编码字符串在Ansi编码中的显示字符

返回:string

示例

return  utf8ToAnsi ('2011 tinysoft天软科技');
// 返回字符串:2011 tinysoft天软科技

charToByteIndex(s, index)

字符索引到字节索引的转换。

参数 类型 说明
s string 字符串,源串
index integer 整数,字符位置

返回:integer

示例

// 返回第30字符对应的字节位置
// 其中‘天软’占有4个字节,其余每个字符占1个字节
s := "天软Tinysoft Statistical analysis Language";
return charToByteIndex(s, 30);
// 输出:32

byteToCharLen(s, max_len)

判断字符流S中最多MaxLen的字节中所包含的字符数量。指定最多字节空间后,S字符串的字符个数。

参数 类型 说明
s string 字符串,源串
max_len integer 整数,最大字节数

返回:integer

示例

// 指定最多字节为30后,查找S中30个字节中有多少个字符,
// 其中‘天软’占有4个字节,所以30个字节中,S有28个字符。
s := "天软Tinysoft Statistical analysis Language";
b1 := byteToCharLen(s, 30);
return b1;
// 输出:28

charToByteLen(s, max_len)

判断字符串S中最多MaxLen的字符中占有的字节数。

参数 类型 说明
s string 字符串,源串
max_len integer 整数,字符个数

返回:integer

示例

// 在S字符串中取30个字符,统计其所占的字节数。
// 其中‘天软’占有4个字节,其余每个字符占1个字节,由此,30个字符占有32个字节
s := "天软Tinysoft Statistical analysis Language";
b1 := charToByteLen(s, 30);
return b1;
// 输出:32

charLength(s, index)

指定位置的字符所包含的字节数。

参数 类型 说明
s string 字符串,源串
index integer 整数,字符位置

返回:integer

示例

// 第2个字符‘软’的字节数
s := "天软Tinysoft Statistical analysis Language";
return charLength(s, 2);
// 输出:2

byteToCharIndex(s, index)

字节索引到字符索引的转换。

参数 类型 说明
s string 字符串,源串
index integer 整数,字节位置

返回:integer

示例

// 返回第30字节位置时,是第几个字符位置
// 其中‘天软’占有4个字节,其余每个字符占1个字节
s := "天软Tinysoft Statistical analysis Language";
return byteToCharIndex(s, 30);
// 输出:28

byteType(s, index)

返回字符串的指定位置的字符的类型,类型为:0 单字节字符,1 多字节的引导字节, 2 多字节的结尾字节。

参数 类型 说明
s string 字符串,
index integer 整数,指定字符的位置

返回:tmbcsbytetype

示例

范例01

// 单字节字符‘t
return byteType("2011 tinysoft", 6);
// 0

范例02

// 多字节字符‘天’
return byteType("2011 tinysoft天软", 14);
// 1

范例03

// 多字节字符‘软’,且为最后一个字符
return byteType("2011 tinysoft天软", 15);
// 2

范例04

// 单字节字符‘1’,最后一个字符
return byteType("2011 ", 4);
// 0

unicodeEsc(s)

把一个字符串转换成为%uxxxx的Unicode编码串。

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

返回:string

示例

return echo unicodeEsc('2011 tinysoft天软科技');
// 返回字符串:2011%20tinysoft%u5929%u8F6F%u79D1%u6280

floattoStrw(value)

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

参数 类型 说明
value real 实数

返回:string

示例

范例01

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

范例02

return floattoStrw(1E15);
// 大数量级数据,输出:L"1E15"

unUnicodeEsCw(s)

把一个%uxxxx编码方式的Unicode编码串解码,解码后是一个宽字节的字符串。

参数 类型 说明
s string 字符串,Unicode编码字符串在Ansi编码中的显示字符

返回:string

示例

return unUnicodeEsCw('2011%20tinysoft%u5929%u8F6F%u79D1%u6280');
//  2011 tinysoft天软科技’

currtoStrw(value)

将Currency型的实数转换成宽字节字符串类型返回

参数 类型 说明
value currency 实数

返回:string

示例

return currtoStrw(23.24);
// 输出字符串:"23.24"

inttostrw(value)

整数Value转换成宽字节字符串,与IntToStr的区别是,intTostrw返回的是宽字节字符串。

参数 类型 说明
value integer 整数

返回:string

示例

s := inttostrw(2);
return array(ifString(s), ifwstring(s));
// 输出:array(0,1) 说明返回结果串s为宽字节串,而非多字节字符串。

multiByteToUnicodew(s, cp)

把一个多字节字符串转换为Unicode编码的宽字节字符串。

参数 类型 说明
s string 字符串,多字节字符串
cp integer 整数,代码页。中文为936或者54936。

返回:string

示例

return multiByteToUnicodew('2020 Tinysoft 天软科技', 936);
// 返回宽字节字符串:2020 Tinysoft 天软科技 即L 2020 Tinysoft 天软科技’

utf8ToUnicode(s)

UTF8串转为Unicode串。Unicode串为宽字节字符串。

参数 类型 说明
s string 字符串,UTF8编码字符串在Unicode编码中的显示字符

返回:string

示例

return  utf8ToUnicode ('2011 tinysoft天软科技');
// 返回双字节字符串:2011 tinysoft天软科技

exportjsonstring(data, n)

将TSL结构数据转换为json串。对于非ASCII编码的文字转换为转义字符。

参数 类型 说明
data 天软数据,任意数据类型。
n integer 可选参数,要保留的小数位数。为0时保留1位小数,大于16或小于0时保留全部小数位数

返回:string

示例

范例01:将天软含中文的字符串转化为json串

s := "万科A";
return exportJsonString(s);
// 返回字符串:"\u4E07\u79D1A"

范例02:将数组转化为json串

s := array("A": 123, "B": "Tinysof 2026");
return exportJsonString(s);
// 返回字符串:{\"A\":123,\"B\":\"Tinysof 2026\"}

范例03:将数组转化为json串,并保留2位小数

s := array((1.3245, 2.5123), ('Tinysoft天软', '天软科技'));
return exportJsonString(s, 2);
// 返回字符串:[[1.32,2.51],["Tinysoft\u5929\u8F6F","\u5929\u8F6F\u79D1\u6280"]]

unUnicodeEsc(s)

把一个%uxxxx编码方式的Unicode编码串解码。

参数 类型 说明
s string 字符串,Unicode编码字符串在Ansi编码中的显示字符

返回:string

示例

return unUnicodeEsc('2011%20tinysoft%u5929%u8F6F%u79D1%u6280');
// 输出:2011 tinysoft天软科技

exportJsonStringUtf8(data, n)

将天软数组转换为UTF8编码的Json串,解决与第三方交互时的转码问题。

参数 类型 说明
data 天软数据,任意数据类型。
n integer 可选参数,要保留的小数位数。为0时保留1位小数,大于16或小于0时保留全部小数位数

返回:string

示例

范例01

a := array(
    ("StockID":"SZ000002","StockName":"万  科A","date":"2020-09-01","close":27.22),
    ("StockID":"SZ000002","StockName":"万  科A","date":"2020-09-02","close":27.52));
return exportJsonStringUtf8(a);
// 返回字符串:
// [{"StockID":"SZ000002","StockName":"万  科A","date":"2020-09-01","close":27.22},
// {"StockID":"SZ000002","StockName":"万  科A","date":"2020-09-02","close":27.52}]

范例02:将数组转化为json串,并保留2位小数

s := array((1.3245, 2.5123), ('Tinysoft天软', '天软科技'));
return exportJsonStringUtf8(s, 2);
// 返回字符串:"[[1.32,2.51],[\"Tinysoft\\u6FB6\\u2544\\u848B\",\"\\u6FB6\\u2544\\u848B\\u7EC9\\u621E\\u59A7\"]]"

exportJsonStringMbcs(data, n)

将TSL结构数据转换为json串。和ExportJSONString不同的是,该函数不会对中文进行转码处理,保留中文原码。

参数 类型 说明
data 天软数据,任意数据类型。
n integer 可选参数,要保留的小数位数。为0时保留1位小数,大于16或小于0时保留全部小数位数

返回:string

示例

范例01:将天软含中文的字符串转化为json串

s := "万科A";
return exportJsonStringMbcs(s);
// 返回字符串:"\"万科A\""

范例02:将数组转化为json串

s := array((1, 'a'), ('Tinysoft天软', '天软科技'));
return exportJsonStringMbcs(s);
// 返回字符串:"[[1,\"a\"],[\"Tinysoft天软\",\"天软科技\"]]"

范例03:将数组转化为json串,并保留2位小数

s := array((1.3245, 2.5123), ('Tinysoft天软', '天软科技'));
return exportJsonStringMbcs(s, 2);
// 返回字符串:"[[1.32,2.51],[\"Tinysoft天软\",\"天软科技\"]]"

lengthW(atext)

返回字符串的长度,支持多字节语言,一个汉字当成一个字符。

参数 类型 说明
atext string 字符串,需计算长度的字符串

返回:integer

示例

test_str := "Tinysoft lengthW:汉字当成一个字符";
return lengthW(test_str);
// 输出:25(包括空格和:

midStr(a_text, astart, a_count)

返回Atext字符串从Astart个字符的位置开始数出ACount个字符组成的字符串。天软字符串下标从1开始。

参数 类型 说明
a_text string 字符串数组,源串
astart integer 整数,开始位置,起始位置从1开始
a_count integer 整数,截取的字符串个数

返回:string

示例

test_str := "Tinysoft midStr:支持多字节语言,汉字当成一个字符";
return midStr(test_str, 10, 30);
// 输出字符串:“midStr:支持多字节语言,汉字当成一个字符”

changeFileExt(file_name, extension)

更改文件的扩展名。该函数并不实际更名指定的文件,其仅仅只是创建一个新的文件名字符串。此函数支持多字节字符集。

参数 类型 说明
file_name string 文件名。
extension string 新的扩展名,需包含’.’。

返回:string

示例

// 实际D盘的test.tsl没有改变
return changeFileExt("D:\\test.tsl", ".txt");
// D:\test.txt

extractFilePath(file_name)

返回文件名的驱动器以及目录部分,包含\。

参数 类型 说明
file_name string 字符串,文件路径及文件名

返回:string

示例

return extractFilePath("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// D:\Tinysoft\tslweb\web\

extractFileDir(file_name)

返回文件名的驱动器以及目录部分,即文件所在的目录,若非驱动根目录则不包含\。

参数 类型 说明
file_name string 字符串,文件路径及文件名

返回:string

示例

return extractFileDir("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// D:\Tinysoft\tslweb\web
// 差异说明
// 对于路径的处理,在不同系统中存在差异。如Linux中就没有驱动的概念,因此,在处理带驱动的路径时:
// 如对于根目录的处理extractfiledir("C:\\abc.txt")Windows中返回”C: \”而Linux中返回”C: ”

extractFileDrive(file_name)

返回文件名的驱动器部分。

参数 类型 说明
file_name string 字符串,文件路径及文件名

返回:string

示例

return extractFileDrive("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出:D:

extractFileName(file_name)

返回文件名的去掉路径后的纯文件名部分。

参数 类型 说明
file_name string 字符串,文件路径及文件名

返回:string

示例

return extractFileName("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出:test.tsl

extractFileExt(file_name)

返回文件的扩展名部分,其中包括”.”部分。

参数 类型 说明
file_name string 字符串,文件路径及文件名

返回:string

示例

return extractFileExt("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出:.tsl

extractRelativePath(base_name, dest_name)

返回DestName文件相对于BaseName的相对路径名。

参数 类型 说明
base_name string 字符串,文件路径及文件名1
dest_name string 字符串,文件路径及文件名2

返回:string

示例

return extractRelativePath("D:\\test.tsl", "D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出:Tinysoft\tslweb\web\test.tsl
// 差异说明
// 由于Linux系统中无盘符概念,所以不支持该功能。

isPathDelimiter(s, index)

判断字符串S的Index位置是否是一个’\’符号。

参数 类型 说明
s string 字符串,文件路径及文件名
index integer 整数,字符串位置

返回:bool

示例

return isPathDelimiter("D:\\Tinysoft\\tslweb\\web\\test.tsl", 3);
// 输出:1

isDelimiter(delimiters, s, index)

判断字符串S的Index位置是否包含在Delimiters字符串中。

参数 类型 说明
delimiters string 字符串,源串
s string 字符串,查找字符所在串
index integer 整数,指定的字符位置

返回:bool

示例

return isDelimiter("tinysoft", "2011 tinysoft", 6);
// 输出:1

includeTrailingPathDelimiter(s)

返回加上了’\’结尾的路径。

参数 类型 说明
s string 字符串,文件路径及文件名

返回:string

示例

return includeTrailingPathDelimiter("D:\\Tinysoft\\tslweb\\web");
// 输出:D:\Tinysoft\tslweb\web\

差异说明:与路径中已有的路径分隔符保持一致;当路径中不存在分隔符时,Windows 默认追加 \Linux 默认追加 /。如在 Linux 中 includeTrailingPathDelimiter("/Tinysoft") 返回 /Tinysoft/

includeTrailingBackslash(s)

返回加上了’\’结尾的路径。

参数 类型 说明
s string 字符串,文件路径及文件名

返回:string

示例

return includeTrailingBackslash("D:\\Tinysoft\\tslweb\\web");
// 输出:D:\Tinysoft\tslweb\web\

差异说明:与路径中已有的路径分隔符保持一致;当路径中不存在分隔符时,Windows 默认追加 \Linux 默认追加 /。如在 Linux 中 includeTrailingBackslash("/Tinysoft") 返回 /Tinysoft/

excludeTrailingPathDelimiter(s)

去掉路径的’\’结尾。

参数 类型 说明
s string 字符串,文件路径及文件名

返回:string

示例

return excludeTrailingPathDelimiter("D:\\Tinysoft\\tslweb\\web\\");
// 输出: D:\Tinysoft\tslweb\web

excludeTrailingBackslash(s)

去掉路径的’\’结尾。

参数 类型 说明
s string 字符串,文件路径及文件名

返回:string

示例

return excludeTrailingBackslash("D:\\Tinysoft\\tslweb\\web\\");
// 输出: D:\Tinysoft\tslweb\web

lastDelimiter(delimiters, s)

最后的分隔符在字符串S中的位置。

参数 类型 说明
delimiters string 字符串,分隔符
s string 字符串,文件路径

返回:integer

示例

return lastDelimiter('\\', "D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出:23

ansiCompareFileName(s1, s2)

比较两个文件名,返回>0当S1>S2=0当S1=S2,<0当S1<S2

参数 类型 说明
s1 string 字符串,比较的文件名1
s2 string 字符串,比较的文件名2

返回:integer

示例

范例01

return ansiCompareFileName('index.tsl', "test.tsl");
// 输出:-11

差异说明:返回值的绝对值大小无实际意义,在不同操作系统中结果也表现不一。Linux 中文件名区分大小写,而 Windows 中不区分,所以对比结果会有差异。如下:

范例02:Windows 中(不区分大小写)

return ansiCompareFileName("D:\\test\\file1.txt", "D:\\Test\\File1.txt");
// 结果为0,因为不区分大小写,两文件名一致。

范例03Linux 中(区分大小写)

return ansiCompareFileName("/tinysoft/file1.txt", "/Tinysoft/File1.txt");
// 结果为32,因为区分大小写,两文件名不相等。

ansiLowerCaseFileName(s)

返回小写的文件名。

参数 类型 说明
s string 字符串,文件名

返回:string

示例

return ansiLowerCaseFileName("TEST.tsl");
// 输出:test.tsl

ansiUpperCaseFileName(s)

返回大写的文件名。

参数 类型 说明
s string 字符串,文件名

返回:string

示例

return ansiUpperCaseFileName("test.tsl");
// 输出:TEST.TSL

ansiFormat(formatstr, v1)

返回根据formatstr设定的格式将v1,v2,v3…参数连成字符串返回。

参数 类型 说明
formatstr string 格式串,指明后面的参数的输出格式。
v1 any 各种类型,并对应formatstr中的各种类型

返回:string

soundexSimilar(a_text, a_other, a_length)

判断两个字符串Atext和AOther是否发音相似

参数 类型 说明
a_text string 字符串,发音比较字符串1
a_other string 字符串,发音比较字符串2
a_length integer 判断长度,一般为4,备用参数,暂时无效。

返回:bool

示例

范例01

return soundexSimilar("sun", "sum");
// 输出:1

范例02

return soundexSimilar("sun", "fun");
// 输出:0

范例03

return soundexSimilar("return", "result");
// 输出:0

soundexCompare(a_text, a_other, a_length)

比较两个字符串的发音。根据AText和Aother转成发音码以后用AnsiCompareStr函数比较两个发音码。

参数 类型 说明
a_text string 字符串,发音比较字符串1
a_other string 字符串,发音比较字符串2
a_length integer 判断长度,一般为4,该参数备用,暂时无效

返回:integer

示例

范例01

return soundexCompare("sun", "sum");
// 输出:0

范例02

return soundexCompare("sun", "fun");
// 输出:1

范例03

return soundexCompare("result", "return");
// 输出:-1

parseRegExpr(reg_expr, parse_text, parse_ctrls, matched, matched_pos, matched_len)

正则表达式匹配。匹配成功返回 1,并把匹配串及子匹配组(所有匹配)写入 matched 数组,把对应位置和长度写入 matched_posmatched_len 数组。匹配失败或正则编译出错时,返回字符串类型,内容为失败原因。正则表达式支持 UNICODE 字符串类型。

参数 类型 说明
reg_expr string 正则表达式,基本兼容 Perl 5 的正则语法
parse_text string 需要被匹配的源串
parse_ctrls string 正则控制串,按字符组合(见下表),空串表示默认
matched array of string 出参,存放匹配成功的串及其中的子串。支持求值宏,最大支持 $99、$` 与 $'
matched_pos array of integer 出参,存放匹配串及子串所处的位置
matched_len array of integer 出参,存放匹配串及子串的长度

parse_ctrls 控制字符:

字符 说明
m 多行开关:启用时按换行符让每行都有起点/终点;否则整个串只有一个起点与终点
i 大小写无关
b NOT_BOL:首行不参与起始位置 ^ 匹配;多行开关下带 ^ 的匹配从第二行开始
e NOT_EOL:尾行不参与结束位置 $ 匹配;多行开关下带 $ 的匹配在最后一行结束位置不参与
s 单匹配模式,匹配到一个符合条件的即结束
r 替换开关,启用时参考“定义二”
a REG_DOTALL:使 . 匹配任意字符(含换行符);不设时 . 不匹配换行符
n REG_NOSUB:不存储子表达式信息,只返回是否匹配成功
E REG_NOTEMPTY:禁止匹配空字符串
u REG_UNGREEDY:非贪婪模式

返回:bool。1 表示匹配成功,否则返回匹配失败原因(字符串)。

示例

范例01:匹配数字、指定字符串

source := "ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
parseRegExpr("(\\d+).*(Tinysoft)", source, "", result, m_pos, mlen);
return result;
// 输出:array(("2011 ShenZhenTinysoft","2011","Tinysoft"))

说明:输出中返回匹配的源串 "2011 ShenZhenTinysoft" 以及匹配出来的串 "2011" 和 "Tinysoft"。

  1. 在匹配串中加中括号 () 表示将匹配的结果返回,本例中要返回的是 (\d+)(Tinysoft) 匹配出来的结果。
  2. \ 本身是转义字符,所以要用 \\d 来表示 \d 元字符(匹配一个数字字符)。\\d+ 表示匹配多个数字字符。
  3. . 匹配任意单个字符(除 \n)。.* 匹配任意多个单个字符;由于 .* 没有中括号 (),匹配的字符不返回。
  4. (Tinysoft) 匹配字符串 Tinysoft 并将其返回。注意,字符大小写敏感。

范例02:匹配数字、字符串、带括号的字符串

source := "ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
parseRegExpr("(\\d+).*(Tinysoft) (\\(\\w+\\))", source, "", result, m_pos, mlen);
return result;
// 输出:array(("2011 ShenZhenTinysoft (TSL)","2011","Tinysoft","(TSL)"))

说明:与范例01相比,新增了对 () 的匹配。输出中返回匹配的源串 "2011 ShenZhenTinysoft (TSL)" 以及匹配出来的串 "2011"、"Tinysoft" 和 "(TSL)"。

  1. \\(\\) 是对中括号 () 的匹配。
  2. \\w 表示 \w 元字符,匹配包括下划线的任何单词字符。\\w+ 表示匹配多个任意单词字符。

范例03:处理Unicode串-匹配汉字

source := L"hello 你好!123"; // unicode串
reg := L"[一-龥]+"; // 匹配汉字的正则表达式->也是unicode串
ret := parseRegExpr(reg, source, "", result, m_pos, mlen);
return result;
// 输出:array((L"你好"))

范例04:通过控制符"u"设置为非贪婪模式

source := "hello tiny tiny tiny tiny tiny";
reg := "hello.*(tiny)";
ret := parseRegExpr(reg, source, "u", result, m_pos, mlen);
return result;
// 输出:array(("hello tiny", "tiny"))

multiByteToUnicode(s, cp)

把一个ANSI编码方式转换为Unicode编码。

参数 类型 说明
s string 字符串,ANSI字符串
cp integer 整数,代码页。中文为936或者54936。

返回:string

unicodetomultibyte(s, cp)

把一个Unicode编码方式转换为ANSI编码。

参数 类型 说明
s string 字符串,Unicode字符串。
cp integer 整数,代码页。中文为936或者54936。

返回:string

lcMapString(s, lcid, flag)

编码转化函数,参考WINDOWS API LCMapString。

参数 类型 说明
s string 字符串。
lcid integer 标识ID。
flag integer 转换的参数。

返回:string

示例

return lcMapString("亞洲", 0x0804, 0x2000000); // 繁体转简体字符集
// 输出: 亚洲
// 差异说明:基于 Windows APILinux 不支持。

unicodeEsc2(s)

把一个字符串转换成为\uxxxx的Unicode编码串。

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

返回:string

示例

return unicodeEsc('2011 tinysoft天软科技');
// 返回字符串:2011 tinysoft\u5929\u8F6F\u79D1\u6280

concat(s_n)

返回s1+s2+s3+…sn合并的字符串,支持unicode串(宽字节字符集)进行合并。

参数 类型 说明
s_n string 字符串

返回:string

示例

范例01

arr := concat("thank-", "you-", "very-", "much! ");
return arr; // 输出:thank-you-very-much!

范例02Unicode字符串的合并

s1 := multiByteToUnicodew('天软', 936);
s2 := inttostrw(2020);
return concat(s1, s2);
// 输出宽字节字符串:天软2020

rightStr(text, num_chars)

前N个字符;基于所指定的字符数返回文本字符串中的最后一个或后几个字符;

参数 类型 说明
text string 字符串
num_chars integer 字符个数

返回:string

示例

return rightStr('abccccdddd', 2);
// 输出:’dd

leftStr(text, num_chars)

返回字符串从开始向左数Num_Chars个字符组成的字符串,支持多字节语言,一个汉字当成一个字符。

参数 类型 说明
text string 字符串
num_chars integer 字符个数

返回:string

示例

return leftStr('abccccdddd', 2);
// 输出:’ab

wrapText(max_col)

按照最大行长为MaxCol自动分行。

参数 类型 说明
max_col integer 整型,每行最长字符

返回:string

示例

const_line := "Separate this sentence to two lines.";
return wrapText(const_line, 20);
{输出:
(自动换行时考虑字词的完整性)
Separate this
sentence to two
lines.
}

array2Str(value, aps)

将数组value转换成一个用aps作为分割符号的字符串,与str2Array函数相反。

参数 类型 说明
value array of string 一维数组,需要组合成字符串数据的一维数组,可以是字符串数组,也可以是数字数组
aps string 字符串,分割符,默认分割符为分号‘;

返回:string

示例

var arr := array("thank", "you", "very", "much! ");
a := array2Str(arr, "-");
return a;
// 输出:thank-you-very-much!

chr(value)

返回ascii码的值为value的字符

参数 类型 说明
value integer 整数

返回:string

示例

a_value := chr(50);
return a_value;
// 输出:字符串'2'

wideChr(value)

返回unicode码的值为value的unicode字符

参数 类型 说明
value integer 整数

返回:widestring

示例

a_value := wideChr(25105);
return a_value;
// 输出:Unicode字符串L'我'

setFormatLocalCode(code)

设置Format等函数默认使用的地区区域码,每个区域都有默认的格式。-1为默认格式,0为当前系统所属地区码。

参数 类型 说明
code integer 整型

返回:integer

示例

setFormatLocalCode(0);
return getFormatLocalCode(); // 输出:0

pos(substr, s)

子串位置,返回字符串Substr在字符串S中的位置,即S从第几个字母开始跟Substr的字符匹配,如果没有找到,就返回0。当参数类型不为字符串的时候不返回异常

参数 类型 说明
substr string 字符串类型,需要查找的字符串,子串
s string 字符串类型,源串

返回:integer

示例

范例01

a := pos('a', 'thank you');
return a; // 输出:3

范例02

return pos('fg', 'adcfgvbhj');
// 输出:4

str(x, s)

将一个实数X转换成字符串,存到参数S中

参数 类型 说明
x real 实数
s string 字符串,输出值

返回:integer

示例

str(114, s);
return s; // 输出:1.14000000000000E+0002

intToHex(value, digits)

返回整数Value转换成16进制格式的字符串,Digits为最小的数字个数,不足补0

参数 类型 说明
value integer 整数
digits integer 整数,最小数字个数

返回:string

示例

return intToHex(43, 1);
// 输出: 2B(二进制时候为:101011)

boolToStr2(b)

将布尔型转换成字符串类型并返回。如果B为真,函数返回'true',如果B为假,返回' False'。若想返回’-1’与’0’的结果可用BoolToStr实现。

参数 类型 说明
b bool 布尔型

返回:string

示例

return boolToStr2(2>1); // 返回’ True

decodeSoundexInt(a_value)

是SoundexInt函数的反函数,将表示发音的整数转成发音的字符串(SoundEx Codes)。

参数 类型 说明
a_value integer 整数,表示发音特征的整数

返回:string

示例

test_str := "Tinysoft SoundexInt:返回表示AText的发音的整数";
test_str := decodeSoundexInt(soundexInt(test_str, 4));
return test_str;
// T521

decodeSoundexWord(a_value)

是SoundexWord函数的反函数,将表示发音的整数转成发音的字符串(SoundEx Codes)。

参数 类型 说明
a_value integer 整数,表示发音特征的整数

返回:string

示例

test_str := "Tinysoft SoundexInt:返回表示AText的发音的整数";
test_str := decodeSoundexWord(soundexWord(soundEx(test_str, 4))); // 24206
return test_str;
// T000

ansiPos(_const, s)

判断子串在字符串源串中的位置,从1开始计起,第1个即找到子串,则返回1。如果没有找到对应的子串,则返回0。其中,汉字占一个字符。

参数 类型 说明
_const string 字符串,子串
s string 字符串,源串

返回:integer

示例

return ansiPos("tinysoft", "2011 tinysoft");
// 6

strw(x, s)

将一个实数X转换成科学记数法格式的宽字节字符串,存到参数S中

参数 类型 说明
x real 实数
s widestring 字符串,输出值

返回:integer

示例

v := strw(123.123, s);
return s;
// 返回宽字节字符串:1.23123000000000E+0002

intToHexw(value, digits)

返回整数Value转换成16进制格式的宽字节字符串,Digits为最小的数字个数,不足补0。IntToHexw返回的是宽字节字符串。

参数 类型 说明
value integer 整数
digits integer 整数,最小数字个数

返回:string

示例

return intToHexw(43, 5);
// 返回宽字符串字符串:0002B

ifwstring(value, n)

判断value是否是一个宽字节字符串类型(Unicode字符集)。与ifString的区别是,ifString判断是否是多字节字符类型。可通过可选参数N对数组中的行或元素进行判断。

参数 类型 说明
value any 任意类型数值。
n integer 可选参数,整数。具体参考返回说明

返回:bool

示例

范例一:

// 判断是否为宽字节字符串类型
r1 := ifwstring(1);
r2 := ifwstring("A");
r3 := ifwstring(L"C");
r4 := ifwstring(array(1, "A", L"C"));
return array(r1, r2, r3, r4);
// 输出array(0,0,1,0)

范例二:

// 对数组第一维度数据进行类型判断
t := array(L"C", 3.56, "A", (1, L"C", 3), nil);
return ifwstring(t, -1);
// 输出:array(1,0,0,0,0)

范例三:

// 对数组中每一数据进行类型判断
t := array(L"C", 3.56, "A", (nan, 2.14, L"C"), nil);
return ifwstring(t, 1);
// 输出:array(1,0,0,(0,0,1),0)

boolToStrw2(b)

将布尔型转换成宽字节字符串类型并返回。与BoolToStr2的区别是,BoolToStr2返回的是多字节字符串,而BoolToStrw2返回的是宽字节字符串。

参数 类型 说明
b bool 布尔型

返回:string

示例

return boolToStrw2(2>1);
// 返回宽字节字符串:True

boolToStrw(b)

将布尔型转换成宽字节字符串类型并返回。与BoolToStr的区别是,BoolToStr返回的是多字节字符串,而BoolToStrw返回的是宽字节字符串。

参数 类型 说明
b bool 布尔型

返回:string

示例

return boolToStrw(2>1);
// 返回宽字节字符串:-1

functionVer(_type, name)

返回函数版本号。函数版本号是一个函数保存在SERVER的一个版本标识,可以用来判断函数是否被修改过。可和SAVETABLE和LOADTABLE综合使用。

参数 类型 说明
_type integer 整数,函数类型。
name string 字符串,函数名称。

返回:integer

strToBase64(s)

将字符串转换为BASE64编码并返回,该函数为本运行函数,使用时需要加rdo2

参数 类型 说明
s string 字符串

返回:string

示例

return rdo2 strToBase64('a12'); // 返回字符串:YTEy

base64ToStr(s)

将BASE64编码转换为字符串并返回,该函数为本运行函数,使用时需要加rdo2

参数 类型 说明
s string 字符串,BASE64编码的字符串。

返回:string

示例

return rdo2 base64ToStr('YTEy'); // 返回字符串:a12

encodeUriComponent(s)

将URI中的某些字符用十六进制的转义序列进行替换

参数 类型 说明
s string 字符串,含有URI或其他要编码的字符串

返回:string

decodeUriComponent(s)

将URI中的十六进制转义序用它们表示的字符替换

参数 类型 说明
s string 字符串,由EncodeURIComponent(s)函数编码的字符串

返回:string

encodeUri(s)

将URI中的某些字符用十六进制的转义序列进行替换

参数 类型 说明
s string 字符串含有 URI 或其他要编码的文本

返回:string

decodeUri(s)

将URI中的十六进制转义序用它们表示的字符替换

参数 类型 说明
s string 字符串,由EncodeURI (s)函数编码的字符串

返回:string

getMsgDigest(s, mode)

计算字符串s的摘要,返回摘要的字符串

参数 类型 说明
s string 计算摘要的字符串。
mode integer 指定摘要算法,摘要函数支持的算法包括:

返回:string