# 内置函数使用说明文档

本文档描述了系统提供的内置函数及其用法。这些函数可以在任务编辑器中直接使用，为任务流程提供强大的字符串处理功能。

## 字符串检查函数

### isBlank(str)
检查字符串是否为null、空字符串或只包含空白字符。

**参数**:
- `str`: 要检查的字符串

**返回值**: 如果字符串为空，则返回 true；否则返回 false

**示例**:
```javascript
isBlank(null)     // 返回 true
isBlank("")       // 返回 true
isBlank(" ")      // 返回 true
isBlank("hello")  // 返回 false
```

### isNotBlank(str)
检查字符串是否不为空（不为 null 且不只包含空白字符）。

**参数**:
- `str`: 要检查的字符串

**返回值**: 如果字符串不为空，则返回 true；否则返回 false

**示例**:
```javascript
isNotBlank(null)     // 返回 false
isNotBlank("")       // 返回 false
isNotBlank(" ")      // 返回 false
isNotBlank("hello")  // 返回 true
```

### isAnyBlank(str1, str2, ...)
检查多个字符串中是否有任意一个为空。

**参数**:
- `str1, str2, ...`: 要检查的字符串列表

**返回值**: 如果任何一个字符串为空，则返回 true；否则返回 false

**示例**:
```javascript
isAnyBlank("hello", "world")  // 返回 false
isAnyBlank("hello", "")       // 返回 true
isAnyBlank("hello", " ")      // 返回 true
```

### isAllBlank(str1, str2, ...)
检查多个字符串是否全部为空。

**参数**:
- `str1, str2, ...`: 要检查的字符串列表

**返回值**: 如果所有字符串都为空，则返回 true；否则返回 false

**示例**:
```javascript
isAllBlank("", " ")          // 返回 true
isAllBlank("hello", "")      // 返回 false
isAllBlank("hello", "world") // 返回 false
```

### isNumeric(str)
检查字符串是否为数字（整数或浮点数）。

**参数**:
- `str`: 要检查的字符串

**返回值**: 如果字符串是数字，则返回 true；否则返回 false

**示例**:
```javascript
isNumeric("123")    // 返回 true
isNumeric("123.45") // 返回 true
isNumeric("abc")    // 返回 false
isNumeric("123abc") // 返回 false
```

### isAlpha(str)
检查字符串是否只包含字母。

**参数**:
- `str`: 要检查的字符串

**返回值**: 如果字符串只包含字母，则返回 true；否则返回 false

**示例**:
```javascript
isAlpha("abc") // 返回 true
isAlpha("123") // 返回 false
isAlpha("a1b") // 返回 false
```

## 字符串匹配函数

### startsWith(str, prefix)
检查字符串是否以指定前缀开头。

**参数**:
- `str`: 要检查的字符串
- `prefix`: 前缀字符串

**返回值**: 如果字符串以指定前缀开头，则返回 true；否则返回 false

**示例**:
```javascript
startsWith("hello world", "hello") // 返回 true
startsWith("hello world", "world") // 返回 false
```

### endsWith(str, suffix)
检查字符串是否以指定后缀结尾。

**参数**:
- `str`: 要检查的字符串
- `suffix`: 后缀字符串

**返回值**: 如果字符串以指定后缀结尾，则返回 true；否则返回 false

**示例**:
```javascript
endsWith("hello world", "world") // 返回 true
endsWith("hello world", "hello") // 返回 false
```

### contains(str, substr)
检查字符串是否包含指定子字符串。

**参数**:
- `str`: 要检查的字符串
- `substr`: 子字符串

**返回值**: 如果字符串包含指定子字符串，则返回 true；否则返回 false

**示例**:
```javascript
contains("hello world", "lo wo") // 返回 true
contains("hello world", "abc")   // 返回 false
```

### indexOf(str, substr, start, end)
查找子字符串在字符串中的索引位置。

**参数**:
- `str`: 要搜索的字符串
- `substr`: 要查找的子字符串
- `start`: 开始搜索的位置，可选，默认为0
- `end`: 结束搜索的位置，可选，默认为字符串末尾

**返回值**: 子字符串在字符串中的索引位置，如果找不到则返回 -1

**示例**:
```javascript
indexOf("hello world", "world")  // 返回 6
indexOf("hello world", "o")      // 返回 4
indexOf("hello world", "o", 5)   // 返回 7（从位置5开始查找）
```

## 字符串操作函数

### split(str, separator, maxsplit)
按指定分隔符拆分字符串。

**参数**:
- `str`: 要拆分的字符串
- `separator`: 分隔符
- `maxsplit`: 最大拆分次数，可选，默认为 -1（无限制）

**返回值**: 拆分后的字符串列表

**示例**:
```javascript
split("a,b,c", ",")      // 返回 ["a", "b", "c"]
split("a b c")           // 返回 ["a", "b", "c"]
split("a,b,c,d", ",", 2) // 返回 ["a", "b", "c,d"]
```

### chop(str)
去掉字符串的最后一个字符。

**参数**:
- `str`: 要处理的字符串

**返回值**: 处理后的字符串

**示例**:
```javascript
chop("hello") // 返回 "hell"
chop("h")     // 返回 ""
chop("")      // 返回 ""
```

### chomp(str)
去掉字符串末尾的换行符（\n、\r 或 \r\n）。

**参数**:
- `str`: 要处理的字符串

**返回值**: 处理后的字符串

**示例**:
```javascript
chomp("hello\n")  // 返回 "hello"
chomp("hello\r")  // 返回 "hello"
chomp("hello\r\n") // 返回 "hello"
chomp("hello")    // 返回 "hello"（保持不变）
```

### difference(str1, str2)
获取第二个字符串在第一个字符串中不一样的部分。
从第二个字符串第一位去匹配第一个字符串，按照顺序比较。

**参数**:
- `str1`: 第一个字符串
- `str2`: 第二个字符串

**返回值**: 不一样的部分，如果完全匹配则返回空字符串

**示例**:
```javascript
difference("abc", "abd")  // 返回 "d"
difference("abc", "abcd") // 返回 "d"
difference("abc", "a")    // 返回 ""
```

### replace(str, old, new, count)
替换字符串中的指定子串。

**参数**:
- `str`: 原字符串
- `old`: 要替换的子串
- `new`: 替换后的子串
- `count`: 替换次数，可选，默认为 -1（全部替换）

**返回值**: 替换后的字符串

**示例**:
```javascript
replace("hello", "l", "x")    // 返回 "hexxo"
replace("hello", "l", "x", 1) // 返回 "hexlo"（只替换第一个）
```

### remove(str, substr)
从字符串中删除所有指定的子串。

**参数**:
- `str`: 原字符串
- `substr`: 要删除的子串

**返回值**: 删除后的字符串

**示例**:
```javascript
remove("hello", "l")  // 返回 "heo"
remove("hello", "he") // 返回 "llo"
```

### right(str, length)
从右边获取指定长度的子字符串。

**参数**:
- `str`: 原字符串
- `length`: 要获取的长度

**返回值**: 截取的子字符串

**示例**:
```javascript
right("hello", 2) // 返回 "lo"
right("hello", 5) // 返回 "hello"
right("hello", 0) // 返回 ""
```

### left(str, length)
从左边获取指定长度的子字符串。

**参数**:
- `str`: 原字符串
- `length`: 要获取的长度

**返回值**: 截取的子字符串

**示例**:
```javascript
left("hello", 2) // 返回 "he"
left("hello", 5) // 返回 "hello"
left("hello", 0) // 返回 ""
```

### length(str)
获取字符串的长度。

**参数**:
- `str`: 要测量的字符串

**返回值**: 字符串的长度，如果为 null 则返回 0

**示例**:
```javascript
length("hello") // 返回 5
length("")      // 返回 0
length(null)    // 返回 0
```

### reverse(str)
反转字符串。

**参数**:
- `str`: 要反转的字符串

**返回值**: 反转后的字符串

**示例**:
```javascript
reverse("hello") // 返回 "olleh"
reverse("a")     // 返回 "a"
reverse("")      // 返回 ""
```

## 使用场景

这些内置函数在以下场景中特别有用：

1. **输入验证** - 使用 `isBlank`、`isNumeric` 等函数验证输入参数
2. **字符串处理** - 使用 `replace`、`remove` 等函数处理字符串
3. **条件判断** - 使用 `startsWith`、`contains` 等函数进行条件判断
4. **数据格式化** - 使用 `split`、`right`、`left` 等函数格式化数据

## 注意事项

1. 所有函数对 null 值都有保护处理，不会引发异常
2. 字符串索引从 0 开始
3. 在使用函数时，请确保参数类型正确，避免类型错误 