用于转换 excel 或数据库中模式的映射逻辑
Mapping logic for converting a pattern in excel or database
我有数千个映射模式需要转换。附件是显示我需要转换为目标值的源值的图像。
下面是我能够破译的一些规则:-
- 如果破折号('-')刚好在任何值之前,则需要将其转换为竖线('|')
- 如果中间有多个破折号,例如4 个破折号,然后它们将转换为 4 个管道和 3 个破折号,如第二个示例所示,以显示 3 个空字段 (|-|-|-|)
- 如果末尾有多个破折号,例如3 个破折号,然后它们将被转换为 3 个竖线和 3 个破折号,如第一个示例所示,以便显示 3 个没有竖线的空字段 (|-|-|-)
- 开头永远不会有破折号
- 一共有8个值。每个 |-|被认为是一个空值。每个字段由竖线分隔。
我正在寻找使用任何可能的软件将源值转换为预期目标值的方法。
这个快速的用户定义函数似乎可以满足您的要求,无需正则表达式。
Function mapSource(str As String)
Dim tmp As Variant, i As Long
'strip leading hyphens
Do While Left(str, 1) = Chr(45) And Len(str) > 0: str = Right(str, Len(str) - 1): Loop
'split str to a maximum of 8 array elements
tmp = Split(str, Chr(45), 8)
'preserve an array of 8 elements
ReDim Preserve tmp(7)
'replace empty array elements with hyphens
For i = LBound(tmp) To UBound(tmp)
If tmp(i) = vbNullString Then tmp(i) = Chr(45)
Next i
'rejoin array into str
str = Join(tmp, Chr(124))
'output mapped str
mapSource = str
End Function
我有数千个映射模式需要转换。附件是显示我需要转换为目标值的源值的图像。
下面是我能够破译的一些规则:-
- 如果破折号('-')刚好在任何值之前,则需要将其转换为竖线('|')
- 如果中间有多个破折号,例如4 个破折号,然后它们将转换为 4 个管道和 3 个破折号,如第二个示例所示,以显示 3 个空字段 (|-|-|-|)
- 如果末尾有多个破折号,例如3 个破折号,然后它们将被转换为 3 个竖线和 3 个破折号,如第一个示例所示,以便显示 3 个没有竖线的空字段 (|-|-|-)
- 开头永远不会有破折号
- 一共有8个值。每个 |-|被认为是一个空值。每个字段由竖线分隔。
我正在寻找使用任何可能的软件将源值转换为预期目标值的方法。
这个快速的用户定义函数似乎可以满足您的要求,无需正则表达式。
Function mapSource(str As String)
Dim tmp As Variant, i As Long
'strip leading hyphens
Do While Left(str, 1) = Chr(45) And Len(str) > 0: str = Right(str, Len(str) - 1): Loop
'split str to a maximum of 8 array elements
tmp = Split(str, Chr(45), 8)
'preserve an array of 8 elements
ReDim Preserve tmp(7)
'replace empty array elements with hyphens
For i = LBound(tmp) To UBound(tmp)
If tmp(i) = vbNullString Then tmp(i) = Chr(45)
Next i
'rejoin array into str
str = Join(tmp, Chr(124))
'output mapped str
mapSource = str
End Function