我有一个很大的段落,其中包含一些特殊字符,如%1,%2,%3
我需要知道是否有任何设计模式,以取代那些与适当的值,并创建最后一段。例如:下面是我的静态段落。
%1是美丽的国家,%2是%1的首都,%1国家语言是%3。
我通过某些来源获得%1、%2、%3的值。
发布于 2010-01-26 14:47:54
您可以使用strstr或sscanf查找指向半模式的字符串指针(两者都是c std库的一部分),但是,要替换它们,您将需要扩展内存块以容纳替换项(如果它们更大),查看grep(适用于unix),或者查看一些字符串搜索算法,如Boyer-Moore。
您还可以查看google template system或pegtl
发布于 2010-01-26 01:31:58
我不确定是否有这样的设计模式,但是看起来你想在你的应用程序中加入一些模板。
使用jinja 2创建模板的示例
>>> from jinja2 import Template
>>> template = Template('{{ country }} is a beautiful country!')
>>> template.render(country='India')
India is a beautiful country.或者只是搜索和替换...
发布于 2010-01-26 01:33:18
您所描述的是构建一个解析器。对于像您的问题这样简单的问题,您可能希望保持设计简单,并对大多数语言中可用的字符串使用搜索-替换机制。
如果你需要更强大的东西(例如,在最后的字符串中允许"%1“),我会考虑使用regex或CFG引擎,如果这是你打算在现实世界中使用的东西,因为处理边缘情况(比如%%1%1%%%1%)可能会变得相当复杂。
https://stackoverflow.com/questions/2134165
复制相似问题