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.
82 KiB
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返回-1,Linux中返回-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)
返回字符串S1,S2是否相等
| 参数 | 类型 | 说明 |
|---|---|---|
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,因为不区分大小写,两文件名一致。
范例03:Linux 中(区分大小写)
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_pos、matched_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"。
- 在匹配串中加中括号
()表示将匹配的结果返回,本例中要返回的是(\d+)和(Tinysoft)匹配出来的结果。 \本身是转义字符,所以要用\\d来表示\d元字符(匹配一个数字字符)。\\d+表示匹配多个数字字符。.匹配任意单个字符(除\n)。.*匹配任意多个单个字符;由于.*没有中括号(),匹配的字符不返回。(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)"。
\\(和\\)是对中括号()的匹配。\\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 API,Linux 不支持。
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!
范例02:Unicode字符串的合并
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