Логика сопоставления для преобразования шаблона в Excel или базе данных - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть тысячи картографических шаблонов, которые мне нужно преобразовать.Прикрепленное изображение показывает исходное значение, которое мне нужно преобразовать в целевые значения.

Source Pattern vs Target Pattern

Некоторые из правил, которые я могу расшифровать,ниже: -

  1. Если тире ('-') находится непосредственно перед любым значением, то его необходимо преобразовать в трубу ('|')
  2. Если впосередине, например, 4 черты, затем они будут преобразованы в 4 трубы и 3 черты, как показано во втором примере, чтобы показать 3 пустых поля (| - | - | - |)
  3. Если в конце несколько черточекнапример, 3 черты, затем они будут преобразованы в 3 трубы и 3 черты, как показано в первом примере, чтобы показать 3 пустых поля без трубы в конце (| - | - | -)
  4. Там никогда не будеттире в начале
  5. Всего 8 значений.Каждый | - |считается пустым значением.Каждое поле разделено каналом.

Я ищу способы преобразования исходных значений в целевые целевые значения с использованием любого возможного программного обеспечения.

1 Ответ

0 голосов
/ 28 февраля 2019

Эта быстрая пользовательская функция отвечает вашим требованиям без регулярных выражений.

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...