数学 / 随机 / 字符串函数
数学
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
max(a, b, ...) | 多个数值 | Number | 最大值 |
min(a, b, ...) | 多个数值 | Number | 最小值 |
abs(n) | Number | Number | 绝对值 |
floor(n) | Number | Integer | 向下取整 |
ceil(n) | Number | Integer | 向上取整 |
round(n) | Number | Integer | 四舍五入 |
round(n, decimals) | Number, Integer | Number | 保留 N 位小数 |
sqrt(n) | Number | Number | 平方根 |
pow(base, exp) | Number, Number | Number | 幂运算 |
clamp(val, min, max) | Number×3 | Number | 限制在 [min, max] 区间 |
between(val, min, max) | Number×3 | Boolean | 是否在 [min, max] 区间内(含端点) |
yaml
成功率 = clamp(80 - 等级 * 5, 10, 100)
伤害 = floor(攻击力 * 1.5)
精确值 = round(3.14159, 2) # 3.14
# clamp 示例
clamp(15, 0, 10) # 10(超过最大值)
clamp(-5, 0, 10) # 0(低于最小值)
clamp(5, 0, 10) # 5(在范围内)
# between 示例
between(5, 1, 10) # true
between(15, 1, 10) # false对比:clamp vs min + max
两种写法等价,clamp 可读性更高:
yaml
# 等价
成功率 = max(10, min(100, 80 - 等级 * 5))
成功率 = clamp(80 - 等级 * 5, 10, 100)随机
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
rand(max) | Integer | Integer | [0, max] 随机整数 |
rand(min, max) | Integer×2 | Integer | [min, max] 随机整数 |
rand_float(max) | Number | Number | [0, max) 随机浮点 |
rand_float(min, max) | Number×2 | Number | [min, max) 随机浮点 |
weighted_random(options) | String | String | 加权随机选择 |
yaml
随机攻击 = rand(10, 50) # 10-50 整数
随机索引 = rand(5) # 0-5 整数
随机倍率 = rand_float(0.8, 1.2) # 0.8-1.2 浮点加权随机
选项串格式 名称:权重 用逗号分隔:
yaml
品质 = weighted_random('普通:50,稀有:30,传说:15,史诗:5')
# 权重总和可任意,按相对比例抽取字符串
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
length(str) | String | Integer | 字符数(列表用法见 列表函数) |
substring(str, start) | String, Integer | String | 截取子串(start 到末尾) |
substring(str, start, end) | String, Integer×2 | String | 截取 [start, end) |
replace(str, old, new) | String×3 | String | 替换所有出现 |
lowercase(str) | String | String | 转小写 |
uppercase(str) | String | String | 转大写 |
trim(str) | String | String | 去首尾空白 |
contains(str, sub) | String×2 | Boolean | 是否包含子串 |
startswith(str, prefix) | String×2 | Boolean | 前缀匹配 |
endswith(str, suffix) | String×2 | Boolean | 后缀匹配 |
split(str, delim) | String×2 | List<String> | 分割为列表 |
split(str, delim, index) | String, String, Integer | String | 分割后取第 index 段(支持负索引) |
format(template, arg0, ...) | String, Any... | String | 模板替换 {0}, {1}... |
color(str) | String | String | & → § 颜色码转换 |
matches(str, pattern) | String×2 | Boolean | 正则匹配 |
equals(s1, s2) | String×2 | Boolean | 字符串相等 |
isempty(value) | Any | Boolean | 是否为空(null、空串、空列表) |
yaml
名称长度 = length(@input.name)
等级文本 = split("等级:5", ":", 1) # "5"
格式化 = format("玩家{0}获得{1}金币", player.name, 100) # "玩家Steve获得100金币"
彩色文本 = color("&a成功") # "§a成功"split 负索引
yaml
文本 = "a,b,c,d,e"
split(文本, ",", -1) # "e"
split(文本, ",", -2) # "d"字符串方法链
字符串对象也支持方法链调用,两种写法等价:
yaml
# 函数形式
length(text)
substring(text, 0, 5)
contains(text, "abc")
# 方法形式(更链式)
text.length()
text.substring(0, 5)
text.contains("abc")