我已经创建了一个导入CSV文件的应用程序,应用程序导入的每个CSV文件都可以包含不同的数据,将来还会添加CSV文件的新格式。我在JSON中创建了一个定义,详细说明了每个文件,而不是硬代码。我编写了一个基本的导入类,它从文件中导入每一行。
我希望能够对正在导入的一些数据执行小的转换/修改。我把这个转变存储为
right(%data%,5)其中%data%是我正在处理的CSV文件的列。
我开始编写转换器,并使用处理器处理每一列。下面是right转换器的一个示例
public function transformRight($string,$numChars) {
return substr($string,(-1 * abs($numChars)));
}我现在面临的问题是,我希望执行更复杂的转换--我希望能够使用多个函数,我希望能够连接值并接受字符串的最后x字符。
我会为我想要进行的每一种独特类型的转换编写一个转换方法,但这似乎不是很好的实践/非常有效。我一直在考虑创建一个lexer /解析器,但是对于我想要创建的简单事物,我所看到的一切似乎都是复杂的。我会将转换存储为
trim(concat('ABC',right(%data%,5)))使用正则表达式会是更好的方法吗?或者是词汇/解析器?或者我没看过的东西?
发布于 2019-02-15 09:06:40
我发现了一个名为表达语言的Symfony组件--它完全符合我的要求--也很容易添加自定义表达式。
https://softwareengineering.stackexchange.com/questions/387179
复制相似问题