# Builtin - 字符串

## `adjustLineBreaks(s, style)`

声明：function

统一字符串中的换行符。`style` 为 0 时使用换行符，为 1 时使用回车加换行符；也支持数组批量处理

<!-- tags: 字符串 文本 string text -->

| 参数    | 类型                | 说明                       |
| ------- | ------------------- | -------------------------- |
| `s`     | string\|array       | 要调整的字符串或字符串数组 |
| `style` | TTextLineBreakStyle | 0 表示 LF，1 表示 CRLF     |

返回：string|array

### 示例

```tsl
echo adjustLineBreaks("a\r\nb", 0);
// 输出：
// a
// b
```

## `ansiCompareFileName(s1, s2)`

声明：function

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

<!-- tags: 字符串 文本 string text S1 S2 -->

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

返回：integer

### 示例

范例01：

```tsl
echo ansiCompareFileName('index.tsl', "test.tsl");
// 输出：-11
```

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

范例02：Windows 中（不区分大小写）

```tsl
echo ansiCompareFileName("D:\\test\\file1.txt", "D:\\Test\\File1.txt");
// Windows 输出：0；Linux 文件名区分大小写，结果为正数。
```

范例03：Linux 中（区分大小写）

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

## `ansiContainsStr(a_text, a_sub_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_text`     | string | 字符串类型，源串 |
| `a_sub_text` | string | 字符串型，子串   |

返回：bool

### 示例

```tsl
a_text := 'abcdefg';
echo ansiContainsStr(a_text, 'Bcd');
// 输出：0
```

## `ansiContainsText(a_text, a_sub_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_text`     | string | 字符串类型，源串 |
| `a_sub_text` | string | 字符串类型，子串 |

返回：bool

### 示例

```tsl
text := 'abcdefg';
echo ansiContainsText(text, 'Abcd');
// 输出：1，包含
```

## `ansiDequotedStr(s, aquote)`

声明：function

去掉字符串开头的指定引号，并把字符串中成对的重复引号还原为单个引号

<!-- tags: 字符串 文本 string text -->

| 参数     | 类型   | 说明             |
| -------- | ------ | ---------------- |
| `s`      | string | 源字符串         |
| `aquote` | char   | 要去掉的引号字符 |

返回：string

### 示例

```tsl
echo ansiDequotedStr('"Tinysoft"', '"');
// 输出：Tinysoft
```

## `ansiEndsStr(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
text := 'abcdefg';
echo ansiEndsStr('efg', text);
// 输出：1
```

## `ansiEndsText(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
text := 'abcdefg';
echo ansiEndsText('Efg', text);
// 输出：1
```

## `ansiFormat(formatstr, v_1, ...)`

声明：function

根据 formatstr 指定的格式将参数连接成字符串并返回

<!-- tags: 字符串 文本 string text -->

| 参数        | 类型   | 说明                                  |
| ----------- | ------ | ------------------------------------- |
| `formatstr` | string | 格式串，指明后续参数的输出格式        |
| `v_1`       | any    | 第一个格式参数                        |
| `...`       | any    | 可选。更多与 formatstr 对应的格式参数 |

返回：string

### 示例

```tsl
echo ansiFormat("%d-%s", 7, "TSL");
// 输出：7-TSL
```

## `ansiIndexStr(a_text, a_values)`

声明：function

判定指定的字符串Atext可以匹配到的第一个由参数Avalues指定的字符串数组中元素索引号，就是数组的第几个元素（从0开始计算）。返回整数，如果没有找到匹配的字符串，就返回-1。与AnsiEndsText函数不同，字符串的匹配是大小写敏感的 注意：这种判定是基于大小写敏感

<!-- tags: 字符串 文本 string text -->

| 参数       | 类型   | 说明                       |
| ---------- | ------ | -------------------------- |
| `a_text`   | string | 字符串类型，需匹配、查找串 |
| `a_values` | array  | 字符串型数组，匹配串数组   |

返回：int

### 示例

```tsl
echo ansiIndexStr("Beta", array("alpha", "Beta", "gamma"));
// 输出：1
```

## `ansiIndexText(a_text, a_values)`

声明：function

判定指定的字符串Atext可以匹配到的第一个由参数Avalues指定的字符串数组中元素索引号，就是数组的第几个元素（从0开始计算）。返回整数，如果没有找到匹配的字符串，就返回-1 注意：这种判定是基于大小写不敏感

<!-- tags: 字符串 文本 string text -->

| 参数       | 类型   | 说明                       |
| ---------- | ------ | -------------------------- |
| `a_text`   | string | 字符串类型，需匹配、查找串 |
| `a_values` | array  | 字符串型数组，匹配串数组   |

返回：int

### 示例

```tsl
echo ansiIndexText("BETA", array("alpha", "beta", "gamma"));
// 输出：1
```

## `ansiLowerCaseFileName(s)`

声明：function

返回小写的文件名

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数 | 类型   | 说明           |
| ---- | ------ | -------------- |
| `s`  | string | 字符串，文件名 |

返回：string

### 示例

```tsl
echo ansiLowerCaseFileName("TEST.tsl");
// 输出：test.tsl
```

## `ansiMatchStr(a_text, avalues)`

声明：function

判定指定的字符串Atext是否可以匹配由参数Avalues指定的字符串数组中的某个字符串。返回布尔型真假值，如果Atext匹配到了Avalues数组中的某个字符串，就返回真，否则返回假。与AnsiMatchText函数不同，字符串的匹配是大小写敏感的 注意：这种判定是基于大小写敏感

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型   | 说明                   |
| --------- | ------ | ---------------------- |
| `a_text`  | string | 字符串类型，子串       |
| `avalues` | array  | 字符串型数组，源串数组 |

返回：bool

### 示例

```tsl
echo ansiMatchStr("Beta", array("alpha", "Beta", "gamma"));
// 输出：1
```

## `ansiMatchText(a_text, avalues)`

声明：function

判定指定的字符串Atext是否可以完全匹配由参数Avalues指定的字符串数组中的某个字符串。返回布尔型真假值，如果Atext匹配到了Avalues数组中的某个字符串，就返回真，否则返回假。 注意：这种判定是基于大小写不敏感

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型   | 说明                   |
| --------- | ------ | ---------------------- |
| `a_text`  | string | 字符串类型，子串       |
| `avalues` | array  | 字符串型数组，源串数组 |

返回：bool

### 示例

```tsl
echo ansiMatchText("BETA", array("alpha", "beta", "gamma"));
// 输出：1
```

## `ansiPos(substr, s)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

| 参数     | 类型   | 说明         |
| -------- | ------ | ------------ |
| `substr` | string | 字符串，子串 |
| `s`      | string | 字符串，源串 |

返回：integer

### 示例

```tsl
echo ansiPos("tinysoft", "2011 tinysoft");
// 输出：6
```

## `ansiQuotedStr(s, quote)`

声明：function

在字符串两端加上指定引号，并把源字符串中的同类引号加倍

<!-- tags: 字符串 文本 string text -->

| 参数    | 类型   | 说明         |
| ------- | ------ | ------------ |
| `s`     | string | 源字符串     |
| `quote` | char   | 要添加的引号 |

返回：string

### 示例

```tsl
echo ansiQuotedStr("Tiny's", "'");
// 输出：'Tiny''s'
```

## `ansiReplaceStr(a_text, a_from_text, a_to_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数          | 类型   | 说明                   |
| ------------- | ------ | ---------------------- |
| `a_text`      | string | 字符串类型，源串       |
| `a_from_text` | string | 字符串类型，被替换内容 |
| `a_to_text`   | string | 字符串类型，替换内容   |

返回：string

### 示例

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

## `ansiReplaceText(a_text, a_from_text, a_to_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数          | 类型   | 说明                   |
| ------------- | ------ | ---------------------- |
| `a_text`      | string | 字符串类型，源串       |
| `a_from_text` | string | 字符串类型，被替换内容 |
| `a_to_text`   | string | 字符串类型，替换内容   |

返回：string

### 示例

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

## `ansiResemblesText(a_text, a_other)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：bool

### 示例

范例01：

```tsl
echo ansiResemblesText("sun", "sum");
// 输出：1
```

范例02：

```tsl
echo ansiResemblesText("sun", "fun");
// 输出：0
```

范例03：

```tsl
echo ansiResemblesText("transaction", "transact");
// 输出：1
```

## `ansiStartsStr(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
atext := 'abcdefg';
echo ansiStartsStr('abcd', atext);
// 输出：1
```

## `ansiStartsText(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
text := 'abcdefg';
echo ansiStartsText('Abc', text);
// 输出：1
```

## `ansiStr2Array(value, aps)`

声明：function

按分隔符把字符串拆成一维字符串数组。省略 `aps` 时使用分号；与 `str2Array` 相比，本函数支持 MBCS 字符串

<!-- tags: 字符串 文本 string text MBCS -->

| 参数    | 类型   | 说明                     |
| ------- | ------ | ------------------------ |
| `value` | string | 要拆分的字符串           |
| `aps`   | string | 分隔符，省略时默认为分号 |

返回：array

### 示例

```tsl
echo trim(toStn(ansiStr2Array("alpha,beta,gamma", ",")));
// 输出：array("alpha","beta","gamma")
```

## `ansiToUtf8(s)`

声明：function

转换为UTF8编码的字符串

<!-- tags: 字符串 转换 编码 文本 string text UTF8 -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 字符串，Ansi字符串 |

返回：string

### 示例

```tsl
utf8_text := ansiToUtf8('2011 tinysoft天软科技');
echo utf8ToAnsi(utf8_text) = '2011 tinysoft天软科技';
// 输出：1
```

## `ansiUpperCaseFileName(s)`

声明：function

返回大写的文件名

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数 | 类型   | 说明           |
| ---- | ------ | -------------- |
| `s`  | string | 字符串，文件名 |

返回：string

### 示例

```tsl
echo ansiUpperCaseFileName("test.tsl");
// 输出：TEST.TSL
```

## `appendStr(dest, s)`

声明：function

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

<!-- tags: 字符串 添加 追加 文本 string text -->

| 参数   | 类型   | 说明           |
| ------ | ------ | -------------- |
| `dest` | string | 字符串，源串   |
| `s`    | string | 字符串，添加串 |

返回：void

### 示例

```tsl
s := "申万";
appendStr(s, "采掘");
echo s; // 输出：申万采掘
```

## `array2Str(value, aps)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：string

### 示例

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

## `base64ToStr(s)`

声明：function

将BASE64编码转换为字符串并返回，该函数为本运行函数；可直接调用

<!-- tags: 字符串 转换 编码 文本 string text BASE64 -->

| 参数 | 类型   | 说明                         |
| ---- | ------ | ---------------------------- |
| `s`  | string | 字符串，BASE64编码的字符串。 |

返回：string

### 示例

```tsl
echo base64ToStr('YTEy'); // 输出：a12
```

## `boolToStr(b, use_bool_strs)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数            | 类型 | 说明                 |
| --------------- | ---- | -------------------- |
| `b`             | bool | 要转换的布尔值       |
| `use_bool_strs` | bool | 布尔型，一般传入假值 |

返回：string

### 示例

```tsl
echo boolToStr(1>2, 0);
// 输出：0
```

## `boolToStr2(b)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型 | 说明   |
| ---- | ---- | ------ |
| `b`  | bool | 布尔型 |

返回：string

### 示例

```tsl
echo boolToStr2(2>1); // 返回’ True’
```

## `boolToStrw(b)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型 | 说明   |
| ---- | ---- | ------ |
| `b`  | bool | 布尔型 |

返回：string

### 示例

```tsl
echo boolToStrw(2>1);
// 返回宽字节字符串：-1
```

## `boolToStrw2(b)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型 | 说明   |
| ---- | ---- | ------ |
| `b`  | bool | 布尔型 |

返回：string

### 示例

```tsl
echo boolToStrw2(2>1);
// 返回宽字节字符串：True
```

## `byteToCharIndex(s, index)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型    | 说明           |
| ------- | ------- | -------------- |
| `s`     | string  | 字符串，源串   |
| `index` | integer | 整数，字节位置 |

返回：integer

### 示例

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

## `byteToCharLen(s, max_len)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

| 参数      | 类型    | 说明             |
| --------- | ------- | ---------------- |
| `s`       | string  | 字符串，源串     |
| `max_len` | integer | 整数，最大字节数 |

返回：integer

### 示例

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

## `byteType(s, index)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数    | 类型    | 说明                 |
| ------- | ------- | -------------------- |
| `s`     | string  | 字符串，             |
| `index` | integer | 整数，指定字符的位置 |

返回：tmbcsbytetype

### 示例

范例01：

```tsl
// 单字节字符‘t’
echo byteType("2011 tinysoft", 6);
// 输出：0
```

范例02：

```tsl
// 多字节字符‘天’
echo byteType("2011 tinysoft天软", 14);
// 输出：1
```

范例03：

```tsl
// 多字节字符‘软’，且为最后一个字符
echo byteType("2011 tinysoft天软", 15);
// 输出：2
```

范例04：

```tsl
// 单字节字符‘1’，最后一个字符
echo byteType("2011 ", 4);
// 输出：0
```

## `changeFileExt(file_name, extension)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

```tsl
// 实际 D 盘的 test.tsl 没有改变
echo changeFileExt("D:\\test.tsl", ".txt");
// 输出：D:\test.txt
```

## `charLength(s, index)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数    | 类型    | 说明           |
| ------- | ------- | -------------- |
| `s`     | string  | 字符串，源串   |
| `index` | integer | 整数，字符位置 |

返回：integer

### 示例

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

## `charToByteIndex(s, index)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型    | 说明           |
| ------- | ------- | -------------- |
| `s`     | string  | 字符串，源串   |
| `index` | integer | 整数，字符位置 |

返回：integer

### 示例

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

## `charToByteLen(s, max_len)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

| 参数      | 类型    | 说明           |
| --------- | ------- | -------------- |
| `s`       | string  | 字符串，源串   |
| `max_len` | integer | 整数，字符个数 |

返回：integer

### 示例

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

## `chr(value)`

声明：function

返回ascii码的值为value的字符

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数    | 类型    | 说明 |
| ------- | ------- | ---- |
| `value` | integer | 整数 |

返回：string

### 示例

```tsl
a_value := chr(50);
echo a_value;
// 输出：字符串'2'
```

## `compareStr(s1, s2)`

声明：function

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

<!-- tags: 字符串 文本 string text S1 S2 -->

| 参数 | 类型   | 说明              |
| ---- | ------ | ----------------- |
| `s1` | string | 字符串，比较字符1 |
| `s2` | string | 字符串，比较字符2 |

返回：integer

### 示例

```tsl
result := compareStr("万科A", "万科Ａ");
echo result < 0;
// 输出：1，表示左侧字符串小于右侧字符串
```

## `compareText(s1, s2)`

声明：function

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

<!-- tags: 字符串 文本 string text S1 S2 -->

| 参数 | 类型   | 说明                |
| ---- | ------ | ------------------- |
| `s1` | string | 字符串，比较字符串1 |
| `s2` | string | 字符串，比较字符串2 |

返回：integer

### 示例

范例01：

```tsl
echo compareText("SZ000002", "SZ000001"); // 输出：1
```

范例02：

```tsl
echo compareText("SZ000001", "sz000001"); // 输出：0
```

范例03：

```tsl
result := compareText("万科A", "万科Ａ");
echo result > 0;
// 输出：1，表示左侧字符串大于右侧字符串
```

## `concat(s_1, s_2, ...)`

声明：function

返回s1+s2+s3+…sn合并的字符串，支持unicode串（宽字节字符集）进行合并

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数  | 类型   | 说明                       |
| ----- | ------ | -------------------------- |
| `s_1` | string | 第一个字符串               |
| `s_2` | string | 第二个字符串               |
| `...` | string | 可选。需要继续合并的字符串 |

返回：string

### 示例

范例01：

```tsl
arr := concat("thank-", "you-", "very-", "much! ");
echo arr; // 输出：thank-you-very-much!
```

范例02：Unicode字符串的合并

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

## `containsStr(a_text, a_sub_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_text`     | string | 字符串类型，源串 |
| `a_sub_text` | string | 字符串型，子串   |

返回：bool

### 示例

```tsl
a := '2020Tinysoft 天软';
b := 'tinysoft';
c := 'Tinysoft';
echo trim(toStn(array(containsStr(a, b), containsStr(a, c))));
// 输出：array(0,1)
```

## `containsText(a_text, a_sub_text)`

声明：function

判断源字符串是否包含指定子串，比较时不区分大小写

<!-- tags: 字符串 判断 检查 文本 string text -->

| 参数         | 类型   | 说明         |
| ------------ | ------ | ------------ |
| `a_text`     | string | 源字符串     |
| `a_sub_text` | string | 要查找的子串 |

返回：bool

### 示例

```tsl
echo containsText("TinySoft", "soft");
// 输出：1
```

## `copy(s, index, count)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

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

## `currToStr(value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型     | 说明 |
| ------- | -------- | ---- |
| `value` | currency | 实数 |

返回：string

### 示例

```tsl
echo currToStr(23.24);
// 输出字符串："23.24"
```

## `currtoStrw(value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型     | 说明 |
| ------- | -------- | ---- |
| `value` | currency | 实数 |

返回：string

### 示例

```tsl
echo currtoStrw(23.24);
// 输出字符串："23.24"
```

## `decoderadixstr(s, presufflen, radix)`

声明：function

对指定进制格式的源码字符串进行解码。与Encoderadixstr的功能相反

<!-- tags: 字符串 解析 parse 文本 string text -->

| 参数         | 类型   | 说明                                                                                                                  |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------- |
| `s`          | string | 字符串                                                                                                                |
| `presufflen` | int    | 整型，前缀或者后缀长度。                                                                                              |
| `radix`      | int    | 整数，最高位(31位)为1的时候，表明为后缀方式，否则为前缀模式。第30位为1表明采用小写字母。低6位为进制，最大支持36进制。 |

返回：string

### 示例

```tsl
echo decoderadixstr("0x310x310x320x32", 2, 16), "\n";
// 输出：1122
```

## `decoderadixwstr(s, presufflen, radix)`

声明：function

对指定进制指定格式的宽字节源码串进行解码。与Encoderadixwstr的功能相反

<!-- tags: 字符串 解析 parse 文本 string text -->

| 参数         | 类型   | 说明                                                                                                                  |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------- |
| `s`          | string | 字符串                                                                                                                |
| `presufflen` | int    | 整型，前缀或者后缀长度。                                                                                              |
| `radix`      | int    | 整数，最高位(31位)为1的时候，表明为后缀方式，否则为前缀模式。第30位为1表明采用小写字母。低6位为进制，最大支持36进制。 |

返回：string

### 示例

```tsl
echo decoderadixwstr("0x00310x00310x00320x0032", 2, 16) = "1122", "\n";
// 输出：1
```

## `decodeSoundexInt(a_value)`

声明：function

是SoundexInt函数的反函数，将表示发音的整数转成发音的字符串（SoundEx Codes）

<!-- tags: 字符串 解析 parse 文本 string text -->

| 参数      | 类型    | 说明                     |
| --------- | ------- | ------------------------ |
| `a_value` | integer | 整数，表示发音特征的整数 |

返回：string

### 示例

```tsl
test_str := "Tinysoft SoundexInt:返回表示AText的发音的整数";
test_str := decodeSoundexInt(soundexInt(test_str, 4));
echo test_str;
// 输出：T521
```

## `decodeSoundexWord(a_value)`

声明：function

是SoundexWord函数的反函数，将表示发音的整数转成发音的字符串（SoundEx Codes）

<!-- tags: 字符串 解析 parse 文本 string text -->

| 参数      | 类型    | 说明                     |
| --------- | ------- | ------------------------ |
| `a_value` | integer | 整数，表示发音特征的整数 |

返回：string

### 示例

```tsl
test_str := "Tinysoft SoundexInt:返回表示AText的发音的整数";
test_str := decodeSoundexWord(soundexWord(soundEx(test_str, 4))); // 24206
echo test_str;
// 输出：T000
```

## `decodeUri(s)`

声明：function

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

<!-- tags: 字符串 解析 parse 文本 string text URI -->

| 参数 | 类型   | 说明                                    |
| ---- | ------ | --------------------------------------- |
| `s`  | string | 字符串，由EncodeURI (s)函数编码的字符串 |

返回：string

### 示例

```tsl
echo decodeUri("https://example.com/a+b?x=1&y=2");
// 输出：https://example.com/a b?x=1&y=2
```

## `decodeUriComponent(s)`

声明：function

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

<!-- tags: 字符串 解析 parse 文本 string text URI -->

| 参数 | 类型   | 说明                                            |
| ---- | ------ | ----------------------------------------------- |
| `s`  | string | 字符串，由EncodeURIComponent(s)函数编码的字符串 |

返回：string

### 示例

```tsl
echo decodeUriComponent("a+b%2Fc%3Fd%3De%26f");
// 输出：a b/c?d=e&f
```

## `decToInt(s)`

声明：function

将十进制字符串转换为整数；不接受十六进制等带进制前缀的格式

<!-- tags: 字符串 转换 编码 文本 string text 十进制 -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 要转换的十进制文本 |

返回：integer

### 示例

范例01：转换十进制字符串

```tsl
return decToInt("12");
// 输出：12
```

范例02：需要解析十六进制时改用 `strToInt`

```tsl
return strToInt("0x12");
// 输出：18
```

## `decToInt32(s)`

声明：function

将十进制字符串转换为 32 位整数；不接受十六进制等带进制前缀的格式

<!-- tags: 字符串 转换 编码 文本 string text 十进制 32位 -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 要转换的十进制文本 |

返回：integer

### 示例

范例01：转换十进制字符串

```tsl
return decToInt32("12");
// 输出：12
```

范例02：需要解析十六进制时改用 `strToInt32`

```tsl
return strToInt32("0x12");
// 输出：18
```

## `decToInt32Def(s, default)`

声明：function

将十进制字符串转换为 32 位整数；转换失败时返回指定默认值

<!-- tags: 字符串 转换 编码 文本 string text 十进制 32位 默认值 -->

| 参数      | 类型    | 说明                   |
| --------- | ------- | ---------------------- |
| `s`       | string  | 要转换的十进制文本     |
| `default` | integer | 转换失败时返回的默认值 |

返回：integer

### 示例

范例01：转换十进制字符串

```tsl
return decToInt32Def("12", 1);
// 输出：12
```

范例02：转换失败时返回默认值

```tsl
return decToInt32Def("test", 1);
// 输出：1
```

范例03：十六进制文本不是十进制格式

```tsl
return decToInt32Def("0x12", 1);
// 输出：1
```

范例04：需要解析十六进制时改用 `strToInt32Def`

```tsl
return strToInt32Def("0x12", 1);
// 输出：18
```

## `decToInt64(s)`

声明：function

将十进制字符串转换为 64 位整数；不接受十六进制等带进制前缀的格式

<!-- tags: 字符串 转换 编码 文本 string text 十进制 64位 -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 要转换的十进制文本 |

返回：int64

### 示例

范例01：转换十进制字符串

```tsl
return decToInt64("12");
// 输出：12L
```

范例02：需要解析十六进制时改用 `strToInt64`

```tsl
return strToInt64("0x12");
// 输出：18L
```

## `decToInt64Def(s, default)`

声明：function

将十进制字符串转换为 64 位整数；转换失败时返回指定默认值

<!-- tags: 字符串 转换 编码 文本 string text 十进制 64位 默认值 -->

| 参数      | 类型   | 说明                   |
| --------- | ------ | ---------------------- |
| `s`       | string | 要转换的十进制文本     |
| `default` | int64  | 转换失败时返回的默认值 |

返回：int64

### 示例

范例01：转换十进制字符串

```tsl
return decToInt64Def("12", 1);
// 输出：12L
```

范例02：转换失败时返回默认值

```tsl
return decToInt64Def("test", 1);
// 输出：1L
```

范例03：十六进制文本不是十进制格式

```tsl
return decToInt64Def("0x12", 1);
// 输出：1L
```

范例04：需要解析十六进制时改用 `strToInt64Def`

```tsl
return strToInt64Def("0x12", 1);
// 输出：18L
```

## `decToIntDef(s, default)`

声明：function

将十进制字符串转换为整数；转换失败时返回指定默认值

<!-- tags: 字符串 转换 编码 文本 string text 十进制 默认值 -->

| 参数      | 类型    | 说明                   |
| --------- | ------- | ---------------------- |
| `s`       | string  | 要转换的十进制文本     |
| `default` | integer | 转换失败时返回的默认值 |

返回：integer

### 示例

范例01：转换十进制字符串

```tsl
return decToIntDef("12", 1);
// 输出：12
```

范例02：转换失败时返回默认值

```tsl
return decToIntDef("test", 1);
// 输出：1
```

范例03：十六进制文本不是十进制格式

```tsl
return decToIntDef("0x12", 1);
// 输出：1
```

范例04：需要解析十六进制时改用 `strToIntDef`

```tsl
return strToIntDef("0x12", 1);
// 输出：18
```

## `dupeString(a_text, a_count)`

声明：function

将字符串 AText 重复 ACount 次并返回结果

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型    | 说明             |
| --------- | ------- | ---------------- |
| `a_text`  | string  | 字符串类型，源串 |
| `a_count` | integer | 整数，重复的次数 |

返回：string

### 示例

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

## `encoderadixstr(s, presuff, radix)`

声明：function

将字符串转换为指定进制格式的源码

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数      | 类型   | 说明                                                                                                                   |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| `s`       | string | 字符串                                                                                                                 |
| `presuff` | string | 字符串，指定的前缀或者后缀串。                                                                                         |
| `radix`   | int    | 整数，最高位(31位)为1的时候，表明为后缀方式，否则为前缀模式。第30位 为1表明采用小写字母。低6位为进制，最大支持36进制。 |

返回：string

### 示例

```tsl
echo encoderadixstr("1122", "0x", 16), "\n";
// 输出：0x310x310x320x32
```

## `encoderadixwstr(s, presuff, radix)`

声明：function

将字符串按宽字节码转换成指定进制格式的源码。而Encoderadixstr是按多字节字码进行转换

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数      | 类型   | 说明                                                                                                                   |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| `s`       | string | 字符串                                                                                                                 |
| `presuff` | string | 字符串，指定的前缀或者后缀串。                                                                                         |
| `radix`   | int    | 整数，最高位(31位)为1的时候，表明为后缀方式，否则为前缀模式。第30位 为1表明采用小写字母。低6位为进制，最大支持36进制。 |

返回：string

### 示例

```tsl
echo encoderadixwstr("1122", "0x", 16) = "0x00310x00310x00320x0032", "\n";
// 输出：1
```

## `encodeUri(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text URI -->

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

返回：string

### 示例

```tsl
echo encodeUri("https://example.com/a b?x=1&y=2");
// 输出：https://example.com/a+b?x=1&y=2
```

## `encodeUriComponent(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text URI -->

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

返回：string

### 示例

```tsl
echo encodeUriComponent("a b/c?d=e&f");
// 输出：a+b%2Fc%3Fd%3De%26f
```

## `endsStr(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
text := 'abcdefg';
echo endsStr('efg', text);
// 输出：1
```

## `endsText(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

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

## `excludeTrailingBackslash(s)`

声明：function

去掉路径的'\'结尾

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
echo excludeTrailingBackslash("D:\\Tinysoft\\tslweb\\web\\");
// 输出： D:\Tinysoft\tslweb\web
```

## `excludeTrailingPathDelimiter(s)`

声明：function

去掉路径的'\'结尾

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
echo excludeTrailingPathDelimiter("D:\\Tinysoft\\tslweb\\web\\");
// 输出： D:\Tinysoft\tslweb\web
```

## `exportjsonstring(data, n)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text ASCII -->

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

返回：string

### 示例

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

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

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

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

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

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

## `exportJsonStringMbcs(data, n)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：string

### 示例

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

```tsl
s := "万科A";
echo exportJsonStringMbcs(s);
// 返回字符串："\"万科A\""
```

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

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

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

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

## `exportJsonStringUtf8(data, n)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text UTF8 -->

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

返回：string

### 示例

范例01：

```tsl
a := array(
    ("StockID": "SZ000002", "StockName": "万科A", "date": "2020-09-01", "close": 27.22),
    ("StockID": "SZ000002", "StockName": "万科A", "date": "2020-09-02", "close": 27.52)
);
utf8_json := exportJsonStringUtf8(a);
echo utf8ToAnsi(utf8_json);
// 输出：UTF-8 JSON 转回当前 ANSI 代码页后的可读字符串
```

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

```tsl
s := array((1.3245, 2.5123), ('Tinysoft天软', '天软科技'));
utf8_json := exportJsonStringUtf8(s, 2);
echo utf8ToAnsi(utf8_json);
// 输出：[[1.32,2.51],["Tinysoft天软","天软科技"]]
```

## `extractFileDir(file_name)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `file_name` | string | 字符串，文件路径及文件名 |

返回：string

### 示例

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

## `extractFileDrive(file_name)`

声明：function

返回文件名的驱动器部分

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `file_name` | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
drive := extractFileDrive("D:\\Tinysoft\\tslweb\\web\\test.tsl");
echo ifThen(length(drive) > 0, drive, "当前系统无盘符");
// Windows 输出：D:
// Linux 输出：当前系统无盘符
```

## `extractFileExt(file_name)`

声明：function

返回文件的扩展名部分，其中包括"."部分

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `file_name` | string | 字符串，文件路径及文件名 |

返回：string

### 示例

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

## `extractFileName(file_name)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `file_name` | string | 字符串，文件路径及文件名 |

返回：string

### 示例

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

## `extractFilePath(file_name)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `file_name` | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
echo extractFilePath("D:\\Tinysoft\\tslweb\\web\\test.tsl");
// 输出：D:\Tinysoft\tslweb\web\
```

## `extractRelativePath(base_name, dest_name)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：string

### 示例

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

## `floatToStr(value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型 | 说明 |
| ------- | ---- | ---- |
| `value` | real | 实数 |

返回：string

### 示例

范例01：

```tsl
echo floatToStr(23.4);
// 输出字符串："23.4"
```

范例02：

```tsl
echo floatToStr(1E15);
// 大数量级数据，输出："1E15"
```

## `floattoStrw(value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型 | 说明 |
| ------- | ---- | ---- |
| `value` | real | 实数 |

返回：string

### 示例

范例01：

```tsl
echo floattoStrw(1234.1234);
// 输出：L"1234.1234"
```

范例02：

```tsl
echo floattoStrw(1E15);
// 大数量级数据，输出：L"1E15"
```

## `format(formatstr, v_1, ...)`

声明：function

根据 formatstr 指定的格式将参数连接成字符串并返回

<!-- tags: 字符串 格式化 format 文本 string text -->

在占位计算时，Format 把一个汉字当作**一个**位置；如需把一个汉字当作**两个**位置，请用 `AnsiFormat`（参数定义与 Format 完全一致）。

| 参数        | 类型   | 说明                                            |
| ----------- | ------ | ----------------------------------------------- |
| `formatstr` | string | 格式串，由基本文本与 `%` 占位符组成，写法见下文 |
| `v_1`       | any    | 第一个与占位符对应的值                          |
| `...`       | any    | 可选。更多依次与占位符对应的值                  |

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

```txt
%[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 字符串、%% 转义）

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

范例01：（D 和X的使用范例）

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

范例02：（E的使用范例）

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

范例03：（F的使用范例）

```tsl
echo format("%.1f", 1234400.56789);
// 输出字符串： 1234400.6
```

范例04：（G的使用范例）

```tsl
echo format("%G", 1.2E+006);
// 输出字符串：1200000
```

范例05：（N的使用范例）

```tsl
echo format("%.1N", 1234400.56789);
// 输出：取决于当前系统区域设置
```

范例06：（M的使用范例）

```tsl
echo format("%.1M", 1234400.56789);
// 输出：取决于当前系统货币格式
```

范例七：（参数的索引）

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

## `formatCurr(format, value)`

声明：function

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

<!-- tags: 字符串 格式化 format 文本 string text -->

| 参数     | 类型     | 说明           |
| -------- | -------- | -------------- |
| `format` | string   | 字符串，格式串 |
| `value`  | currency | 实数           |

返回：string

### 示例

```tsl
echo formatCurr('0.000E+00', 232.24);
// 输出：2.322E+02
```

## `formatFloat(format, value)`

声明：function

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

<!-- tags: 字符串 格式化 format 文本 string text -->

| 参数     | 类型   | 说明           |
| -------- | ------ | -------------- |
| `format` | string | 字符串，格式串 |
| `value`  | real   | 实数           |

返回：string

### 示例

```tsl
echo formatFloat('0.000E+00', 23224); // 科学计数
// 输出字符串："2.322E+04"
```

```tsl
echo formatFloat('##,###.00', 123); // 千分位 + 两位小数
// 输出字符串："123.00"
```

```tsl
echo formatFloat('00,000.00', 123); // 零填充
// 输出：00123.00
```

## `getChar(s, index)`

声明：function

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

<!-- tags: 字符串 获取 查询 文本 string text -->

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

返回：char

### 示例

```tsl
arr := getChar("i am a student", 9);
echo arr; // 输出： 116
```

## `getFormatLocalCode()`

声明：function

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

<!-- tags: 字符串 获取 查询 文本 string text -->

返回：integer

### 示例

```tsl
setFormatLocalCode(0);
echo getFormatLocalCode(); // 输出：0
```

## `getLikeFlag()`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

返回：integer

### 示例

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

## `getMsgDigest(s, mode)`

声明：function

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

<!-- tags: 字符串 摘要 哈希 散列 digest hash 计算 求解 文本 string text -->

| 参数   | 类型    | 说明             |
| ------ | ------- | ---------------- |
| `s`    | string  | 计算摘要的字符串 |
| `mode` | integer | 摘要算法编号     |

`mode` 支持以下摘要算法：

| mode | 算法   |
| ---: | ------ |
|    0 | CRC32  |
|    1 | MD5    |
|    2 | SHA1   |
|    3 | SHA224 |
|    4 | SHA256 |
|    5 | SHA384 |
|    6 | SHA512 |
|  256 | SM3    |

返回：string

### 示例

```tsl
digests := array(
    "CRC32": getMsgDigest("hello", 0),
    "MD5": getMsgDigest("hello", 1),
    "SHA1": getMsgDigest("hello", 2),
    "SHA224": getMsgDigest("hello", 3),
    "SHA256": getMsgDigest("hello", 4),
    "SHA384": getMsgDigest("hello", 5),
    "SHA512": getMsgDigest("hello", 6),
    "SM3": getMsgDigest("hello", 256)
);
echo trim(toStn(digests));
// 输出：
// CRC32=3610A686
// MD5=5D41402ABC4B2A76B9719D911017C592
// SHA1=AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D
// SHA224=EA09AE9CC6768C50FCEE903ED054556E5BFC8347907F12598AA24193
// SHA256=2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824
// SHA384=59E1748777448C69DE6B800D7A33BBFB9FF1B463E44354C3553BCDB9C666FA90125A3C79F90397BDF5F6A13DE828684F
// SHA512=9B71D224BD62F3785D96D46AD3EA3D73319BFBC2890CAADAE2DFF72519673CA72323C3D99BA5C11D7C7ACC6E14B8C5DA0C4663475C2E5C3ADEF46F73BCDEC043
// SM3=BECBBFAAE6548B8BF0CFCAD5A27183CD1BE6093B1CCECCC303D9C61D0A645268
```

## `getMsgDigest(alias, filename, mode)`

声明：function

计算 `filename` 指定文件的摘要并返回摘要字符串。`alias` 的使用方式与 `ReadFile` 的目录别名一致；空字符串表示不使用目录别名

<!-- tags: 字符串 摘要 哈希 散列 digest hash 计算 求解 文本 string text -->

| 参数       | 类型    | 说明                     |
| ---------- | ------- | ------------------------ |
| `alias`    | string  | 文件目录别名             |
| `filename` | string  | 要计算摘要的文件名或路径 |
| `mode`     | integer | 摘要算法编号             |

`mode` 支持以下摘要算法：

| mode | 算法   |
| ---: | ------ |
|    0 | CRC32  |
|    1 | MD5    |
|    2 | SHA1   |
|    3 | SHA224 |
|    4 | SHA256 |
|    5 | SHA384 |
|    6 | SHA512 |
|  256 | SM3    |

返回：string

### 示例

```tsl
filename := "/data/workspace/tmp/tsl-digest-example.txt";
alias := "";
pos := 0;
writeFile(rwRaw(), alias, filename, pos, 5, "hello");
digests := array(
    "CRC32": getMsgDigest(alias, filename, 0),
    "MD5": getMsgDigest(alias, filename, 1),
    "SHA1": getMsgDigest(alias, filename, 2),
    "SHA224": getMsgDigest(alias, filename, 3),
    "SHA256": getMsgDigest(alias, filename, 4),
    "SHA384": getMsgDigest(alias, filename, 5),
    "SHA512": getMsgDigest(alias, filename, 6)
);
echo trim(toStn(digests));
fileDelete(alias, filename);
// 输出：
// CRC32=3610A686
// MD5=5D41402ABC4B2A76B9719D911017C592
// SHA1=AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D
// SHA224=EA09AE9CC6768C50FCEE903ED054556E5BFC8347907F12598AA24193
// SHA256=2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824
// SHA384=59E1748777448C69DE6B800D7A33BBFB9FF1B463E44354C3553BCDB9C666FA90125A3C79F90397BDF5F6A13DE828684F
// SHA512=9B71D224BD62F3785D96D46AD3EA3D73319BFBC2890CAADAE2DFF72519673CA72323C3D99BA5C11D7C7ACC6E14B8C5DA0C4663475C2E5C3ADEF46F73BCDEC043
```

## `importjsonstring(json)`

声明：function

将json串转化为天软数据类型。 对大无符号数据会自动转换为长整型（INT64） 注意：输入的字符串应是ASCII编码的。因为JSON标准使用UTF8编码，所以请先使用天软Utf8ToAnsi将UTF8编码的字符串缓缓为ASCII编码。可参考下面的例程

<!-- tags: 字符串 文本 string text INT64 ASCII JSON UTF8 -->

| 参数   | 类型   | 说明             |
| ------ | ------ | ---------------- |
| `json` | string | 字符串，json串。 |

返回：any

### 示例

```tsl
echo trim(toStn(importjsonstring('{"code":"A","value":1}')));
// 输出：array("code":"A","value":1)
```

## `includeTrailingBackslash(s)`

声明：function

返回加上了'\'结尾的路径

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
echo includeTrailingBackslash("D:\\Tinysoft\\tslweb\\web");
// 输出：D:\Tinysoft\tslweb\web\
```

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

## `includeTrailingPathDelimiter(s)`

声明：function

返回加上了'\'结尾的路径

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串，文件路径及文件名 |

返回：string

### 示例

```tsl
echo includeTrailingPathDelimiter("D:\\Tinysoft\\tslweb\\web");
// 输出：D:\Tinysoft\tslweb\web\
```

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

## `intToHex(value, digits)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数     | 类型    | 说明               |
| -------- | ------- | ------------------ |
| `value`  | integer | 整数               |
| `digits` | integer | 整数，最小数字个数 |

返回：string

### 示例

```tsl
echo intToHex(43, 1);
// 输出： 2B(二进制时候为：101011)
```

## `intToHexw(value, digits)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数     | 类型    | 说明               |
| -------- | ------- | ------------------ |
| `value`  | integer | 整数               |
| `digits` | integer | 整数，最小数字个数 |

返回：string

### 示例

```tsl
echo intToHexw(43, 5);
// 返回宽字符串字符串：0002B
```

## `intToStr(value)`

声明：function

整数Value转换成字符串

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型    | 说明 |
| ------- | ------- | ---- |
| `value` | integer | 整数 |

返回：string

### 示例

```tsl
echo intToStr(43);
// 输出："43"
```

## `inttostrw(value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数    | 类型    | 说明 |
| ------- | ------- | ---- |
| `value` | integer | 整数 |

返回：string

### 示例

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

## `isDelimiter(delimiters, s, index)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

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

返回：bool

### 示例

```tsl
echo isDelimiter("tinysoft", "2011 tinysoft", 6);
// 输出：1
```

## `isPathDelimiter(s, index)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

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

返回：bool

### 示例

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

## `isValidIdent(ident)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数    | 类型   | 说明   |
| ------- | ------ | ------ |
| `ident` | string | 字符串 |

返回：bool

### 示例

```tsl
echo isValidIdent('a0ffh2');
// 输出： 1
```

## `lastDelimiter(delimiters, s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `delimiters` | string | 字符串，分隔符   |
| `s`          | string | 字符串，文件路径 |

返回：integer

### 示例

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

## `leftBStr(a_text, a_count)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数      | 类型    | 说明                   |
| --------- | ------- | ---------------------- |
| `a_text`  | string  | 字符串，源串           |
| `a_count` | integer | 整数，截取字符串的个数 |

返回：string

### 示例

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

## `leftStr(text, num_chars)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：string

### 示例

```tsl
echo leftStr('abccccdddd', 2);
// 输出：’ab’
```

## `lengthW(atext)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数    | 类型   | 说明                       |
| ------- | ------ | -------------------------- |
| `atext` | string | 字符串，需计算长度的字符串 |

返回：integer

### 示例

```tsl
test_str := "Tinysoft lengthW:汉字当成一个字符";
echo lengthW(test_str);
// 输出：25（包括空格和:）
```

## `lowerCase(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo lowerCase("万科A");
// 输出： 万科a
```

## `makeLcid(language_id, sort_id)`

声明：function

创建LCID编码函数

<!-- tags: 字符串 排序 sort 创建 生成 文本 string text LCID -->

| 参数          | 类型 | 说明             |
| ------------- | ---- | ---------------- |
| `language_id` | int  | 语言ID标识ID。   |
| `sort_id`     | int  | 排序顺序标识ID。 |

返回：int

### 示例

```tsl
echo makeLcid(2052, 0);
// 输出：2052
```

## `midBStr(a_text, astart, a_count)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：string

### 示例

```tsl
arr := midBStr("i am a student", 6, 6);
echo arr; // 输出： a stud
```

## `midStr(a_text, astart, a_count)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：string

### 示例

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

## `multiByteToUnicode(s, cp)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text ANSI -->

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

返回：string

### 示例

```tsl
echo multiByteToUnicode("ABC", 936);
// 输出："A\0B\0C\0\0"
```

## `multiByteToUnicodew(s, cp)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：string

### 示例

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

## `nextCharIndex(s, index)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：integer

### 示例

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

## `ord(value)`

声明：function

如果是STRING类型返回value\[1\]的ASCII序号，就是value字符串的第一个字符的ASCII序号,如果为WIDESTRING，则为UNICODE码

<!-- tags: 字符串 文本 string text ASCII WIDESTRING UNICODE -->

| 参数    | 类型   | 说明         |
| ------- | ------ | ------------ |
| `value` | string | WideString\\ |

返回：int

### 示例

```tsl
echo ord("A");
// 输出：65
```

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

声明：function

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

<!-- tags: 字符串 解析 parse 文本 string text 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：匹配数字、指定字符串

```tsl
source := "ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
parseRegExpr("(\\d+).*(Tinysoft)", source, "", result, m_pos, mlen);
echo trim(toStn(result));
// 输出：array(("2011 ShenZhenTinysoft","2011","Tinysoft"))
```

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

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

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

```tsl
source := "ParseRegExpr 2011 ShenZhenTinysoft (TSL)";
parseRegExpr("(\\d+).*(Tinysoft) (\\(\\w+\\))", source, "", result, m_pos, mlen);
echo trim(toStn(result));
// 输出：array(("2011 ShenZhenTinysoft (TSL)","2011","Tinysoft","(TSL)"))
```

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

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

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

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

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

```tsl
source := "hello tiny tiny tiny tiny tiny";
reg := "hello.*(tiny)";
ret := parseRegExpr(reg, source, "u", result, m_pos, mlen);
echo trim(toStn(result));
// 输出：array(("hello tiny", "tiny"))
```

## `parseRegExpr(reg_expr, parse_text, parse_ctrls, r_str, result)`

声明：function

按正则表达式匹配源字符串，并用指定内容替换匹配项。操作成功时将替换后的字符串写入 `result`

<!-- tags: 字符串 解析 parse 文本 string text -->

| 参数          | 类型   | 说明                                      |
| ------------- | ------ | ----------------------------------------- |
| `reg_expr`    | string | 正则表达式，基本兼容 Perl 5 的正则语法    |
| `parse_text`  | string | 要匹配和替换的源字符串                    |
| `parse_ctrls` | string | 正则控制串；执行替换时必须包含 `r`        |
| `r_str`       | string | 替换内容，可使用 `$0` 到 `$99` 等匹配项宏 |
| `result`      | string | 出参，保存替换后的字符串                  |

返回：bool|string。操作成功返回 1；失败时返回错误原因。

### 示例

```tsl
source := "abc123def";
ok := parseRegExpr("123", source, "r", "X", result);
echo ok, ":", result, "\n";
// 输出：1:abcXdef
```

## `pos(substr, s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数     | 类型   | 说明                               |
| -------- | ------ | ---------------------------------- |
| `substr` | string | 字符串类型，需要查找的字符串，子串 |
| `s`      | string | 字符串类型，源串                   |

返回：integer

### 示例

范例01：

```tsl
a := pos('a', 'thank you');
echo a; // 输出：3
```

范例02：

```tsl
echo pos('fg', 'adcfgvbhj');
// 输出：4
```

## `replaceStr(a_text, a_from_text, a_to_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数          | 类型   | 说明                   |
| ------------- | ------ | ---------------------- |
| `a_text`      | string | 字符串类型，源串       |
| `a_from_text` | string | 字符串类型，被替换内容 |
| `a_to_text`   | string | 字符串类型，替换内容   |

返回：string

### 示例

```tsl
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";
echo 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.
```

## `replaceText(a_text, a_from_text, a_to_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数          | 类型   | 说明                   |
| ------------- | ------ | ---------------------- |
| `a_text`      | string | 字符串类型，源串       |
| `a_from_text` | string | 字符串类型，被替换内容 |
| `a_to_text`   | string | 字符串类型，替换内容   |

返回：string

### 示例

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

## `reversebString(s)`

声明：function

按字符顺序反转字符串，可处理非 MBCS 的原始字符串

<!-- tags: 字符串 文本 string text MBCS -->

| 参数 | 类型   | 说明           |
| ---- | ------ | -------------- |
| `s`  | string | 要反转的字符串 |

返回：string

### 示例

```tsl
echo reversebString("abc");
// 输出：cba
```

## `reverseString(s)`

声明：function

返回字符串S的反序

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数 | 类型   | 说明       |
| ---- | ------ | ---------- |
| `s`  | string | 字符串类型 |

返回：string

### 示例

```tsl
echo reverseString('abcde1234');
// 返回字符串：4321edcba
```

## `rightBStr(a_text, a_count)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数      | 类型    | 说明                   |
| --------- | ------- | ---------------------- |
| `a_text`  | string  | 字符串，源串           |
| `a_count` | integer | 整数，截取字符串的个数 |

返回：string

### 示例

```tsl
arr := rightBStr("i am a student", 4);
echo arr; // 输出：dent
```

## `rightStr(text, num_chars)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

```tsl
echo rightStr('abccccdddd', 2);
// 输出：’dd’
```

## `sameFileName(s1, s2)`

声明：function

比较两个文件名是否相同，如果同名返回true，否则返回false

<!-- tags: 字符串 文本 string text -->

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

返回：bool

### 示例

```tsl
echo sameFileName("index.tsl", "test.tsl");
// 输出：0
```

## `sameText(s1, s2)`

声明：function

返回字符串S1，S2是否相等

<!-- tags: 字符串 返回 获取 文本 string text S1 S2 -->

| 参数 | 类型   | 说明                |
| ---- | ------ | ------------------- |
| `s1` | string | 字符串，比较字符串1 |
| `s2` | string | 字符串，比较字符串2 |

返回：bool

### 示例

```tsl
echo sameText("SZ000001", "sz000001"); // 输出：1
// 输出：1
```

## `setChar(s, index, ch)`

声明：function

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

<!-- tags: 字符串 设置 修改 文本 string text -->

| 参数    | 类型           | 说明             |
| ------- | -------------- | ---------------- |
| `s`     | string\|binary | 字符串或二进制流 |
| `index` | integer        | 字符位置         |
| `ch`    | integer        | 0-255 之间的整数 |

返回：integer

### 示例

```tsl
value := "abc";
result := setChar(value, 2, 90);
echo trim(toStn(array("value": value, "result": result)));
// 输出：array("value":"aZc","result":0)
```

## `setFormatLocalCode(code)`

声明：function

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

<!-- tags: 字符串 设置 修改 文本 string text -->

| 参数   | 类型    | 说明 |
| ------ | ------- | ---- |
| `code` | integer | 整型 |

返回：integer

### 示例

```tsl
setFormatLocalCode(0);
echo getFormatLocalCode(); // 输出：0
```

## `setLength(s, new_length)`

声明：function

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

<!-- tags: 字符串 设置 修改 文本 string text -->

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

返回：integer

### 示例

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

## `setLikeFlag(flag)`

声明：function

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

<!-- tags: 字符串 设置 修改 文本 string text -->

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

控制模式取值：

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

返回：integer

### 示例

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

## `soundEx(a_text, alength)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：string

### 示例

```tsl
test_str1 := "sun";
s1 := soundEx(test_str1, 4);
test_str2 := "sum";
s2 := soundEx(test_str2, 4);
test_str3 := "test";
s3 := soundEx(test_str3, 4);
echo trim(toStn(array(s1, s2, s3)));
// 输出：array("S500","S500","T230")
```

## `soundexCompare(a_text, a_other, a_length)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：integer

### 示例

范例01：

```tsl
echo soundexCompare("sun", "sum");
// 输出：0
```

范例02：

```tsl
result := soundexCompare("sun", "fun");
echo result > 0;
// 输出：1，表示第一个发音码大于第二个发音码
```

范例03：

```tsl
echo soundexCompare("result", "return");
// 输出：-1
```

## `soundexInt(a_text, alength)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

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

返回：integer

### 示例

```tsl
test_str1 := "sun";
s1 := soundexInt(test_str1, 4);
test_str2 := "sum";
s2 := soundexInt(test_str2, 4);
test_str3 := "test";
s3 := soundexInt(test_str3, 4);
echo trim(toStn(array(s1, s2, s3)));
// 输出：array(208597,208597,218929)
```

## `soundexProc(a_text, a_other)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型   | 说明                    |
| --------- | ------ | ----------------------- |
| `a_text`  | string | 字符串，比较发音字符串1 |
| `a_other` | string | 字符串，比较发音字符串1 |

返回：bool

### 示例

范例01：

```tsl
echo soundexProc("sun", "sum");
// 输出：1
```

范例02：

```tsl
echo soundexProc("sun", "fun");
// 输出：0
```

范例03：

```tsl
echo soundexProc("transaction", "transact");
// 输出：1
```

## `soundexSimilar(a_text, a_other, a_length)`

声明：function

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

<!-- tags: 字符串 判断 检查 文本 string text -->

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

返回：bool

### 示例

范例01：

```tsl
echo soundexSimilar("sun", "sum");
// 输出：1
```

范例02：

```tsl
echo soundexSimilar("sun", "fun");
// 输出：0
```

范例03：

```tsl
echo soundexSimilar("return", "result");
// 输出：0
```

## `soundexWord(a_text)`

声明：function

把 SoundEx 发音特征字符串的前四个字符和长度编码为整数

<!-- tags: 字符串 文本 string text -->

| 参数     | 类型   | 说明                   |
| -------- | ------ | ---------------------- |
| `a_text` | string | SoundEx 发音特征字符串 |

返回：integer

### 示例

```tsl
echo soundexWord(soundEx("Tinysoft", 4));
// 输出：24206
```

## `startsStr(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

```tsl
atext := 'abcdefg';
echo startsStr('abcd', atext);
// 输出：1
```

## `startsText(a_sub_text, a_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

| 参数         | 类型   | 说明             |
| ------------ | ------ | ---------------- |
| `a_sub_text` | string | 字符串类型，子串 |
| `a_text`     | string | 字符串类型，源串 |

返回：bool

### 示例

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

## `str(x, s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明           |
| ---- | ------ | -------------- |
| `x`  | real   | 实数           |
| `s`  | string | 字符串，输出值 |

返回：integer

### 示例

```tsl
str(114, s);
echo s; // 输出：1.14000000000000E+0002
```

## `str2Array(value, aps)`

声明：function

按分隔符把字符串拆成一维字符串数组。省略 `aps` 时使用分号

<!-- tags: 字符串 文本 string text -->

| 参数    | 类型   | 说明                     |
| ------- | ------ | ------------------------ |
| `value` | string | 要拆分的字符串           |
| `aps`   | string | 分隔符，省略时默认为分号 |

返回：array

### 示例

```tsl
echo trim(toStn(str2Array("alpha,beta,gamma", ",")));
// 输出：array("alpha","beta","gamma")
```

## `strCmp(s1, s2)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：integer

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

### 示例

```tsl
a := strCmp("arr", "arry");
echo a; //
// 输出：-1
```

## `strToBase64(s)`

声明：function

将字符串转换为BASE64编码并返回，该函数为本运行函数；可直接调用

<!-- tags: 字符串 转换 编码 文本 string text BASE64 -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo strToBase64('a12'); // 输出：YTEy
```

## `strToBool(s)`

声明：function

如果S为'0'，返回假，如果是非0的数字串，则返回真

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明       |
| ---- | ------ | ---------- |
| `s`  | string | 数字字符串 |

返回：bool

### 示例

```tsl
echo strToBool("1");
// 输出：1
```

## `strToBoolDef(s, default)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型   | 说明             |
| --------- | ------ | ---------------- |
| `s`       | string | 数字字符串       |
| `default` | bool   | 整数，默认返回值 |

返回：bool

### 示例

```tsl
echo strToBoolDef("12", 3);
// 输出： 1
```

## `strToCurr(s)`

声明：function

将数字字符串S转换成实数返回，字符串中不允许有千分号，最大有效小数位为4位，超过四位小数的处理在不同的版本处理可能存在不一致的地方

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：float

### 示例

```tsl
echo strToCurr("123.45");
// 输出：123.45
```

## `strToCurrDef(s, default)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数      | 类型     | 说明         |
| --------- | -------- | ------------ |
| `s`       | string   | 字符串       |
| `default` | currency | 实数，默认值 |

返回：currency

### 示例

```tsl
echo strToCurrDef('1321.233', 3);
// 输出：1321.233
```

## `strToFloat(s)`

声明：function

将数字字符串S转换成实数返回，字符串中不允许有千分号

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：float

### 示例

```tsl
echo strToFloat("123.45");
// 输出：123.45
```

## `strToFloatDef(s, default)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数      | 类型   | 说明         |
| --------- | ------ | ------------ |
| `s`       | string | 字符串       |
| `default` | real   | 实数，默认值 |

返回：real

### 示例

```tsl
echo strToFloatDef('a', 2);
// 输出：2
```

## `strToInt(s)`

声明：function

将字符串转换为整数。 支持各种进制格式字符串的转换（如二进制、十六进制等）。若只转换十进制格式字符串，可使用函数FAQ：DecToInt

<!-- tags: 字符串 转换 编码 文本 string text FAQ -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串。需转换的字符串。 |

返回：int

### 示例

```tsl
echo strToInt("$FF");
// 输出：255
```

## `strToInt32(s)`

声明：function

将字符串转换为32位整数。 支持各种进制格式字符串的转换（如二进制、十六进制等）。若只转换十进制格式字符串，可使用函数FAQ：DecToInt32

<!-- tags: 字符串 转换 编码 文本 string text FAQ -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串。需转换的字符串。 |

返回：int

### 示例

```tsl
echo strToInt32("12345");
// 输出：12345
```

## `strToInt32Def(s, default)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：integer

### 示例

范例01：

```tsl
echo strToInt32Def("12", 1); // 输出： 12
```

范例02：

```tsl
echo strToInt32Def("test", 1); // 输出： 1
```

范例03：

```tsl
echo strToInt32Def("0x12", 1); // 输出：18
```

## `strToInt64(s)`

声明：function

将字符串转换为64位整数。 支持各种进制格式字符串的转换（如二进制、十六进制等）。若只转换十进制格式字符串，可使用函数FAQ：DecToInt64

<!-- tags: 字符串 转换 编码 文本 string text FAQ -->

| 参数 | 类型   | 说明                     |
| ---- | ------ | ------------------------ |
| `s`  | string | 字符串。需转换的字符串。 |

返回：int64

### 示例

```tsl
echo strToInt64("2147483648");
// 输出：2147483648
```

## `strToInt64Def(s, default)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：int64

### 示例

范例01：

```tsl
echo strToInt64Def("12", 1); // 输出： 12L
```

范例02：

```tsl
echo strToInt64Def("test", 1); // 输出： 1L
```

范例03：

```tsl
echo strToInt64Def("0x12", 1); // 输出：18L
```

## `strToIntDef(s, default)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：integer

### 示例

范例01：

```tsl
echo strToIntDef("12", 1); // 输出： 12
```

范例02：

```tsl
echo strToIntDef("test", 1); // 输出： 1
```

范例03：

```tsl
echo strToIntDef("0x12", 1); // 输出：18
```

## `strw(x, s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型       | 说明           |
| ---- | ---------- | -------------- |
| `x`  | real       | 实数           |
| `s`  | widestring | 字符串，输出值 |

返回：integer

### 示例

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

## `stuffbString(a_text, a_start, alength, a_sub_text)`

声明：function

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

<!-- tags: 字符串 文本 string text MBCS -->

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

返回：string

### 示例

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

## `stuffString(a_text, a_start, alength, a_sub_text)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

```tsl
atext := "Here will be instead by \'HERE\'";
a_sub_text := "HERE";
echo stuffString(atext, 1, 4, a_sub_text);
// 输出：HERE will be instead by ‘HERE’
```

## `sysEncodecryptStr(s, t)`

声明：function

对字符串进行加密

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

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

## `trim(s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo trim(" Hello! \r\n Tinysoft  ");
// 输出：
// "Hello!
// Tinysoft"
```

## `trimLeft(s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo trimLeft("Hello! \r\n Tinysoft  ");
// 输出：
// "Hello!
// Tinysoft  "
```

## `trimRight(s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo trimRight("Hello! \r\n Tinysoft  ");
// 输出：
// " Hello!
// Tinysoft "
```

## `tryDecToInt(s, value)`

声明：function

尝试将十进制字符串转换为整数；成功时返回真并通过 `value` 输出结果，失败时返回假并将 `value` 置为 `nil`

<!-- tags: 字符串 转换 编码 文本 string text 十进制 尝试 -->

| 参数    | 类型         | 说明                                 |
| ------- | ------------ | ------------------------------------ |
| `s`     | string       | 要转换的十进制文本                   |
| `value` | integer\|nil | 变参。接收转换结果，失败时接收 `nil` |

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryDecToInt("12", value);
return array(ret, value);
// 输出：array(1,12)
```

范例02：转换失败

```tsl
ret := tryDecToInt("test", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例03：十六进制文本不是十进制格式

```tsl
ret := tryDecToInt("0x12", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例04：需要解析十六进制时改用 `tryStrToInt`

```tsl
ret := tryStrToInt("0x12", value);
return array(ret, value);
// 输出：array(1,18)
```

## `tryDecToInt32(s, value)`

声明：function

尝试将十进制字符串转换为 32 位整数；成功时返回真并通过 `value` 输出结果，失败时返回假并将 `value` 置为 `nil`

<!-- tags: 字符串 转换 编码 文本 string text 十进制 32位 尝试 -->

| 参数    | 类型         | 说明                                 |
| ------- | ------------ | ------------------------------------ |
| `s`     | string       | 要转换的十进制文本                   |
| `value` | integer\|nil | 变参。接收转换结果，失败时接收 `nil` |

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryDecToInt32("12", value);
return array(ret, value);
// 输出：array(1,12)
```

范例02：转换失败

```tsl
ret := tryDecToInt32("test", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例03：十六进制文本不是十进制格式

```tsl
ret := tryDecToInt32("0x12", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例04：需要解析十六进制时改用 `tryStrToInt32`

```tsl
ret := tryStrToInt32("0x12", value);
return array(ret, value);
// 输出：array(1,18)
```

## `tryDecToInt64(s, value)`

声明：function

尝试将十进制字符串转换为 64 位整数；成功时返回真并通过 `value` 输出结果，失败时返回假并将 `value` 置为 `nil`

<!-- tags: 字符串 转换 编码 文本 string text 十进制 64位 尝试 -->

| 参数    | 类型       | 说明                                 |
| ------- | ---------- | ------------------------------------ |
| `s`     | string     | 要转换的十进制文本                   |
| `value` | int64\|nil | 变参。接收转换结果，失败时接收 `nil` |

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryDecToInt64("12", value);
return array(ret, value);
// 输出：array(1,12L)
```

范例02：转换失败

```tsl
ret := tryDecToInt64("test", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例03：十六进制文本不是十进制格式

```tsl
ret := tryDecToInt64("0x12", value);
return array(ret, value);
// 输出：array(0,NIL)
```

范例04：需要解析十六进制时改用 `tryStrToInt64`

```tsl
ret := tryStrToInt64("0x12", value);
return array(ret, value);
// 输出：array(1,18L)
```

## `tryStrToBool(s, value)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数    | 类型   | 说明           |
| ------- | ------ | -------------- |
| `s`     | string | 数字字符串     |
| `value` | bool   | 布尔型，输出值 |

返回：bool

### 示例

```tsl
tryStrToBool("12", s);
echo s; // 输出： 1
```

## `tryStrToCurr(s, value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：bool

### 示例

```tsl
tryStrToCurr('1321.2333', s);
echo s;
// 输出：1321.2333
```

## `tryStrToFloat(s, value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：bool

### 示例

```tsl
tryStrToFloat('321.23', s);
echo s; // 输出：321.23
```

## `tryStrToInt(s, value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryStrToInt("12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： 12
```

范例02：转换失败

```tsl
ret := tryStrToInt("test", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： "转换失败！"
```

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

```tsl
ret := tryStrToInt("0x12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出：18
```

## `tryStrToInt32(s, value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryStrToInt32("12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： 12
```

范例02：转换失败

```tsl
ret := tryStrToInt32("test", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： "转换失败！"
```

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

```tsl
ret := tryStrToInt32("0x12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出：18
```

## `tryStrToInt64(s, value)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：bool

### 示例

范例01：转换成功

```tsl
ret := tryStrToInt64("12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： 12L
```

范例02：转换失败

```tsl
ret := tryStrToInt64("test", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出： "转换失败！"
```

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

```tsl
ret := tryStrToInt64("0x12", value);
if ret then
    echo value;
else
    echo "转换失败！";
// 输出：18L
```

## `unicodeEsc(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 字符串，Ansi字符串 |

返回：string

### 示例

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

## `unicodeEsc2(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明               |
| ---- | ------ | ------------------ |
| `s`  | string | 字符串，Ansi字符串 |

返回：string

### 示例

```tsl
echo unicodeEsc2('2011 tinysoft天软科技');
// 输出：2011 tinysoft\u5929\u8F6F\u79D1\u6280
```

## `unicodetomultibyte(s, cp)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text ANSI -->

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

返回：string

### 示例

```tsl
unicode_text := multiByteToUnicode("ABC", 936);
echo unicodeToMultiByte(unicode_text, 936);
// 输出：ABC
```

## `unicodetoUtf8(s)`

声明：function

Unicode串转为UTF8串。天软字符串前加L表示宽字节字符串，即Unicode串

<!-- tags: 字符串 文本 string text UTF8 -->

| 参数 | 类型   | 说明                        |
| ---- | ------ | --------------------------- |
| `s`  | string | 字符串，Unicode编码字符串。 |

返回：string

### 示例

```tsl
echo unicodetoUtf8(L"ABC");
// 输出：ABC
```

## `unicompress(_type, data[, compresslevel])`

声明：function

统一压缩函数，对字符串或二进制进行压缩。`_type` 目前支持 zstd、zlib、lz4 三种类型，压缩级别在 zstd 和 zlib 模式下生效

<!-- tags: 字符串 文本 string text -->

| 参数            | 类型          | 说明                                               |
| --------------- | ------------- | -------------------------------------------------- |
| `_type`         | string        | 压缩类型，目前支持 zstd、zlib、lz4 三种类型。      |
| `data`          | string/binary | 字符串或二进制类型，被压缩的数据。                 |
| `compresslevel` | integer       | 可选。压缩级别，目前仅在 zstd 和 zlib 模式下生效。 |

返回：string

### 示例

```tsl
data := "Tinysoft";
compressed := unicompress("zlib", data);
echo length(compressed) > 0, "\n";
// 输出：1
```

## `uniuncompress(_type, data[, srclen])`

声明：function

统一解压函数。`_type` 目前支持 zstd、zlib、lz4 三种类型；`srclen` 表示原始数据大小，省略时自动识别，指定时会校验大小

<!-- tags: 字符串 文本 string text -->

| 参数     | 类型          | 说明                                                   |
| -------- | ------------- | ------------------------------------------------------ |
| `_type`  | string        | 解压类型，目前支持 zstd、zlib、lz4 三种类型。          |
| `data`   | string/binary | 字符串或二进制类型，被解压的数据。                     |
| `srclen` | integer       | 可选。原始数据大小；省略时自动识别，指定时会校验大小。 |

返回：string

### 示例

```tsl
compressed := unicompress("zlib", "Tinysoft");
echo uniuncompress("zlib", compressed) = "Tinysoft", "\n";
// 输出：1
```

## `unUnicodeEsc(s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

```tsl
echo unUnicodeEsc('2011%20tinysoft%u5929%u8F6F%u79D1%u6280');
// 输出：2011 tinysoft天软科技
```

## `unUnicodeEsc2(s)`

声明：function

解码 `\uxxxx` 形式的 Unicode 转义序列，返回多字节字符串

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明                          |
| ---- | ------ | ----------------------------- |
| `s`  | string | 包含 Unicode 转义序列的字符串 |

返回：string

### 示例

```tsl
echo unUnicodeEsc2("\\u0041");
// 输出：A
```

## `unUnicodeEsc2W(s)`

声明：function

解码 `\uxxxx` 形式的 Unicode 转义序列，返回宽字节字符串

<!-- tags: 字符串 文本 string text -->

| 参数 | 类型   | 说明                          |
| ---- | ------ | ----------------------------- |
| `s`  | string | 包含 Unicode 转义序列的字符串 |

返回：string

### 示例

```tsl
echo string(unUnicodeEsc2W("\\u0041"));
// 输出：A
```

## `unUnicodeEsCw(s)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

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

返回：string

### 示例

```tsl
unicode_text := unUnicodeEsCw('2011%20tinysoft%u5929%u8F6F%u79D1%u6280');
echo ifwstring(unicode_text), ":", length(unicode_text);
// 输出：1:17
```

## `upperCase(s)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
echo upperCase("sz000001");
// 输出：SZ000001
```

## `utf8ToAnsi(s)`

声明：function

UTF8串转为Ansi串

<!-- tags: 字符串 文本 string text UTF8 -->

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

返回：string

### 示例

```tsl
utf8_text := ansiToUtf8('2011 tinysoft天软科技');
ansi_text := utf8ToAnsi(utf8_text);
echo ansi_text = '2011 tinysoft天软科技';
// 输出：1
```

## `utf8ToUnicode(s)`

声明：function

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

<!-- tags: 字符串 文本 string text UTF8 -->

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

返回：string

### 示例

```tsl
utf8_text := ansiToUtf8('2011 tinysoft天软科技');
unicode_text := utf8ToUnicode(utf8_text);
echo ifwstring(unicode_text), ":", length(unicode_text);
// 输出：1:17
```

## `val(s, v, code)`

声明：function

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

<!-- tags: 字符串 转换 编码 文本 string text -->

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

返回：any

### 示例

范例一：

```tsl
val("1.1424E+0002", v, code);
echo v; // 输出：114.24
```

范例二：

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

## `wideChr(value)`

声明：function

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

<!-- tags: 字符串 返回 获取 文本 string text -->

| 参数    | 类型    | 说明 |
| ------- | ------- | ---- |
| `value` | integer | 整数 |

返回：widestring

### 示例

```tsl
a_value := wideChr(25105);
echo ifwstring(a_value), ":", length(a_value);
// 输出：1:1
```

## `wrapText(line, max_col)`

声明：function

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

<!-- tags: 字符串 文本 string text -->

| 参数      | 类型    | 说明               |
| --------- | ------- | ------------------ |
| `line`    | string  | 待自动分行的字符串 |
| `max_col` | integer | 整型，每行最长字符 |

返回：string

### 示例

```tsl
const_line := "Separate this sentence to two lines.";
echo wrapText(const_line, 20);
// 自动换行时考虑字词的完整性。
// 输出：
// Separate this
// sentence to two
// lines.
```

## `lcMapString(s, lcid, flag)`

声明：function

按照区域设置标识和映射标志转换字符串

<!-- tags: 字符串 文本 string text LCMapString 区域设置 字符映射 -->

| 参数   | 类型    | 说明           |
| ------ | ------- | -------------- |
| `s`    | string  | 要转换的字符串 |
| `lcid` | integer | 区域设置标识   |
| `flag` | integer | 字符串映射标志 |

返回：string

### 示例

```tsl
echo lcMapString("亞洲", 0x0804, 0x02000000);
// 输出：亚洲
```
