使用表达式树实现字符串插值?

时间:2016-10-05 14:05:12

标签: replace expression-trees string-parsing string-interpolation

我正在开发一个需要支持用户可配置字符串的应用程序,有点像字符串插值在C#6中的工作方式。例如,应用程序应接受如下字符串:

"<%Variable1%>-<%Variable2%>-StaticTextHere_<%Text(<%DateTime(MMdd(yyyy)hhmmssfff)%>_<%Variable3%>_HardCoded)%>"

使用具有键的词典进行搜索和替换替换。因此&lt;%Variable1%&gt; 基本上将替换为 theDictionary [&#34; Variable1&#34;] 。 A&lt;%DateTime(格式)%&gt;标签将被视为.NET实现工作。所以在我的例子中,&lt;%DateTime(MMdd(yyyy)hhmmssfff)%&gt; 现在就像 1005(2016)09502046

扭曲是&lt;%Text()%&gt;内的任何内容标签应该被视为静态的,硬编码的文本,而且只是被忽略了。&#34;否则,在上面的示例中,&lt;%DateTime%&gt;标签将被计算。相反,结果字符串仍然具有&lt;%DateTime(MMdd(yyyy)hhmmssfff)%&gt;在完成搜索和替换之后,其中的一部分(&lt;%Text%&gt;标记被删除)(想法是其他下游应用程序将提取它,解析它,并计算它或进行搜索 - 和 - 替换它。

我的问题是:你会用什么来编写解析和计算这个功能的逻辑?我和我的同事正在抛弃各种想法,并且可能会通过在开头和/或结束标签上分割输入字符串(&lt;%或%&gt;)来实现它,但我记得我在大学和之后做过的类似事情。看着我的旧代码,意识到我写了一个小应用程序,它采用了逻辑表达式,构建了一个表达式树,并打印出来并证明了表达式树。

所以看起来这个字符串解析问题可以使用表达式树来解决。你们同意吗?你们使用或创建什么来解析像我上面那样的字符串并在适当的字段上进行搜索和替换(保留任何&lt;%Text(Something)%&gt;字段)等于&#34;某事&#34;)

0 个答案:

没有答案