You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中处理含数值范围的字符串:分割并展开连续数值数组

如何展开包含数值范围的字符串为连续数值数组?

你已经搞定了逗号分割这一步,接下来只需要对每个项做判断:如果是单个数字就直接转成数值加入结果,如果是带-的范围,就把它拆成起始和结束值,生成中间所有连续数字就行。

Python 实现示例

example = "1,3,4-7,9,13-17"
result = []
# 按逗号分割得到单个项
items = example.split(',')

for item in items:
    if '-' in item:
        # 拆分范围的起始和结束值,转成整数
        start, end = map(int, item.split('-'))
        # 生成从start到end的所有数(range左闭右开,所以end要+1)
        result.extend(range(start, end + 1))
    else:
        # 单个数字直接转整数加入结果
        result.append(int(item))

print(result)
# 输出结果: [1, 3, 4, 5, 6, 7, 9, 13, 14, 15, 16, 17]

JavaScript 实现示例

如果你用JS处理,思路是一样的:

const example = "1,3,4-7,9,13-17";
const result = [];
const items = example.split(',');

items.forEach(item => {
    if (item.includes('-')) {
        // 拆分并转换为数字类型
        const [start, end] = item.split('-').map(Number);
        // 循环生成从start到end的所有数(包含end)
        for (let i = start; i <= end; i++) {
            result.push(i);
        }
    } else {
        result.push(Number(item));
    }
});

console.log(result);
// 输出结果: [1, 3, 4, 5, 6, 7, 9, 13, 14, 15, 16, 17]

关键注意点

  • 处理范围时要确保包含结束值:Python的range是左闭右开的,所以需要写range(start, end + 1);JavaScript的循环直接用i <= end就能包含结束值。
  • 记得把字符串形式的数字转换成数值类型,避免后续出现字符串拼接的问题。

内容的提问来源于stack exchange,提问作者Mark Munsterman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:22:37