【发布时间】:2014-08-20 12:00:16
【问题描述】:
在字符串上实现查找/替换算法的简单方法是什么?我想使用定义替换规则的字典来转换字符串。问题是每次替换后,我必须确保后续替换对原始字符串进行操作。例如:
我的字符串是:ABCABCDEFDEF
我的规则是:ABC -> DEF 和 DEF -> XXX
所以我的结果应该是:DEFDEFXXXXXX 而不是 XXXXXXXXXXXX(如果我先应用规则一,然后应用规则二,这将是结果)。
【问题讨论】:
-
对于每个规则,找到与文本匹配的索引。然后应用规则? (我认为一定有更快的方法)
-
好吧,在我应用每条规则之后,我的索引都会改变,不是吗?
-
遍历整个字符串一次,将所需子字符串的出现记录在一个列表或类似的数据结构中。然后遍历列表并继续替换!
-
创建一个有限状态机。这可以手动完成(只需要 5 个状态)或使用生成器(例如 (f)lex)。
标签: string algorithm string-matching