用于转换 excel 或数据库中模式的映射逻辑

Mapping logic for converting a pattern in excel or database

我有数千个映射模式需要转换。附件是显示我需要转换为目标值的源值的图像。

下面是我能够破译的一些规则:-

  1. 如果破折号('-')刚好在任何值之前,则需要将其转换为竖线('|')
  2. 如果中间有多个破折号,例如4 个破折号,然后它们将转换为 4 个管道和 3 个破折号,如第二个示例所示,以显示 3 个空字段 (|-|-|-|)
  3. 如果末尾有多个破折号,例如3 个破折号,然后它们将被转换为 3 个竖线和 3 个破折号,如第一个示例所示,以便显示 3 个没有竖线的空字段 (|-|-|-)
  4. 开头永远不会有破折号
  5. 一共有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