使用可配置逻辑将字符串数组映射到另一个字符串数组

Map array of strings to another array of strings using configurable logic

如果我有一个字符串数组,我想创建一个“通用”转换器,将数组作为输入,连同一个“映射配置”,并根据映射配置生成另一个字符串数组,我该怎么做?

例如,

input: ["hello", "world", "to", "all", "junk"]
mapper config:

  • Concatenate hello + world (i.e. combine position 0 and 1)
  • Concatenate to + all (i.e. combine position 2 and 3)
  • Drop junk (i.e. delete position 4)

Output: ["hello world", "to all"]

您可以试试这样的方法:

string[] Transform(string[] inputs, Transformation[] transformations)

每个转换都可以有源、操作和目标。对于您的示例,转换数据可能如下所示:

[
 {
  Source: 0,
  Operation: “SetDestination”,
  Destination: 0
 },
 {
  Source: 1,
  Operation: “ConcatenateDestinationSpaceSource”,
  Destination: 0
 },
 {
  Source: 2,
  Operation: “SetDestination”,
  Destination: 1
 },
 {
  Source: 3,
  Operation: “ConcatenateDestinationSpaceSource”,
  Destination: 1
 }
]

该方法的伪代码如下所示:

foreach(transformation in transformations)
{
    switch(transformation.Operation)
    {
        case SetDestination:
            output[transformation.Destination] = input[transformation.Source];
            break;
        case ConcatenateDestinationSpaceSource:
            output[transformation.Destination] = output[transformation.Destination] + “ “ + input[transformation.Source];
            break;
    }
}

“垃圾”不需要任何操作,因为它永远不会放在输出中。

根据任何其他操作和您选择的数据结构,输出可能需要随时调整大小。这还假设映射配置预计将按给定顺序应用。