基于固定长度拆分动态逗号分隔字符串至多列的技术需求
按字段最大长度拆分逗号分隔字符串(不截断单个值)
核心规则
- 必须以逗号为拆分边界,不能截断任何单个值
- 每列拼接后的总长度不得超过指定最大值(示例为12)
- 若新增值会导致当前列长度超限,则将该值作为新列的起始内容
实现思路
- 先把原始字符串按逗号拆分成独立值的列表
- 维护当前列的内容集合和长度计数器
- 逐个遍历值:
- 计算将当前值加入当前列后的总长度(需考虑已有内容时要额外加一个逗号的长度)
- 若总长度未超限,就把值拼入当前列,更新长度
- 若超限,则将当前列存入结果,以当前值开启新列
- 遍历结束后,把最后一列加入结果列表
代码示例(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
相关产品推荐
相关产品推荐

