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

基于固定长度拆分动态逗号分隔字符串至多列的技术需求

按字段最大长度拆分逗号分隔字符串(不截断单个值)

核心规则

  • 必须以逗号为拆分边界,不能截断任何单个值
  • 每列拼接后的总长度不得超过指定最大值(示例为12)
  • 若新增值会导致当前列长度超限,则将该值作为新列的起始内容

实现思路

  1. 先把原始字符串按逗号拆分成独立值的列表
  2. 维护当前列的内容集合和长度计数器
  3. 逐个遍历值:
    • 计算将当前值加入当前列后的总长度(需考虑已有内容时要额外加一个逗号的长度)
    • 若总长度未超限,就把值拼入当前列,更新长度
    • 若超限,则将当前列存入结果,以当前值开启新列
  4. 遍历结束后,把最后一列加入结果列表

代码示例(Python)

def split_str_by_max_length(original_str, max_len):
    values = original_str.split(',')
    result = []
    current_col = []
    current_len = 0
    
    for val in values:
        val_len = len(val)
        # 计算添加当前值所需的总长度:已有内容时需额外加一个逗号
        required_len = current_len + val_len + (1 if current_col else 0)
        if required_len <= max_len:
            current_col.append(val)
            current_len = required_len
        else:
            # 保存当前列,开启新列
            result.append(','.join(current_col))
            current_col = [val]
            current_len = val_len
    # 处理最后一列数据
    if current_col:
        result.append(','.join(current_col))
    return result

# 测试示例
sample_str = "val1,value2,val3,val4,val5789,value09890,val12637,v1,v3,v4,v5,v6,v7,v8"
max_column_length = 12
output = split_str_by_max_length(sample_str, max_column_length)

# 格式化输出结果
for idx, column in enumerate(output, 1):
    print(f"ValList{idx} → {column}(长度{len(column)})")

输出结果

ValList1 → val1,value2(长度11)
ValList2 → val3,val4(长度9)
ValList3 → val5789(长度7)
ValList4 → value09890(长度9)
ValList5 → val12637(长度8)
ValList6 → v1,v3,v4,v5(长度10)
ValList7 → v6,v7,v8(长度8)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:12:15