如何用T-SQL或C#获取字符串中所有子串(含空格)的位置与长度?
COBOL字符串子串解析与映射实现需求
输入字符串
忽略外层双引号,目标字符串为:
I101G2.2 OZ 001 0002200 L Y 0010000
核心需求
需要提取该字符串中每个子串的起始位置和长度,规则如下:
- 连续非空格字符组成一个子串
- 每个空格字符(" ")需视为长度为1的独立子串
输出格式示例
输出需遵循以下CSV风格格式:
**Sub-String Value**,**Starting Position**, **Length** I101G2.2,0,8 {space},9,1 OZ,10,2 {space},12,1 {space},13,1 001,14,3 {space},17,1 0002200,18,7 {space},25,1 L,26,1 {space},27,1 {space},28,1 {space},29,1 {space},30,1 {space},31,1 {space},32,1 {space},33,1 {space},34,1 Y,35,1 {space},36,1 {space},37,1 {space},38,1 {space},39,1 {space},40,1 {space},41,1 {space},42,1 {space},43,1 0010000,44,7
(后续剩余子串按相同规则输出)
业务背景
生产系统基于COBOL编写,需生成上述格式的输出字符串。同时存在一张映射表,记录了「起始位置+长度」与业务表列名的对应关系(例如:起始位置18、长度7的子串0002200对应「商品类别」列),需通过提取的子串位置和长度匹配映射表,确定其对应的业务列。
请提供COBOL下的实现方法。
内容的提问来源于stack exchange,提问作者PEBKAC
相关产品推荐
相关产品推荐

