我正在构建一个库,它可以清理用户生成的内容,并且需要进行数千个字符串替换(性能是关键)。
在字符串中进行搜索和替换的最快的方法是什么?
下面是库将进行的替换的示例:
u2 => you too
2day => today
2moro => tomorrow
2morrow => tomorrow
2tomorow => tomorrow
字符串的显示方式有四种情况:
- 字符串中的起始单词(末尾有空格,但前面没有)
2day sample
- 字符串的中间(在字符串的前面和末尾各有一个空格)
sample 2day sample
- 字符串结尾(前面只有一个空格,但是最后一个单词)
sample 2day
- 整个字符串匹配
2day
也就是说,如果正则表达式位于sample2daysample
这样的单词中间,则不应替换它
2条答案
按热度按时间ifmq2ha21#
可能的解决方案:
w6lpcovy2#
完全披露:我是这颗宝石的作者
如果你不需要正则表达式,你可以尝试https://github.com/jedld/multi_string_replace,它使用aho-corasick算法来实现这一点。
我看到的唯一问题是算法不理解单词边界,因此您必须将用例分解为:
“2天“、“2天“、“2天”