代码之家  ›  专栏  ›  技术社区  ›  hoju

文本中多词替换的有效方法

  •  11
  • hoju  · 技术社区  · 15 年前

    使用javascript,我需要有效地从一个大约100000字的文档中删除大约10000个关键字,其中1000个是关键字。你建议采用什么方法?

    会吗 大量的 正则表达式实用吗? 或者我应该只重复文档中的字符来查找关键字(无聊)?

    编辑:
    好的观点-只有完整的单词,而不是部分。一些关键字包含空格。
    我正在尝试在客户端完成这项工作,以减少后端的压力。

    3 回复  |  直到 15 年前
        1
  •  6
  •   Emil Ivanov    15 年前

    使用正则表达式可能是一个不错的选择:

    var words = ['bon', 'mad'];
    'joe bon joe mad'.replace(new RegExp('(' + words.join('|') + ')', 'g'), '');
    // 'joe  joe  '
    

    正则表达式 并不是很复杂,比如向前看,ReXEP引擎是用C/C++编写的,所以你可以期待它相当快。尽管如此,还是要进行基准测试,看看性能是否符合您的需要。

    我不认为实现您自己的解析器会更快,但我可能错了——基准测试。

    将文档发送到服务器对我来说不是很好。使用100k字,您将看到一个在兆字节范围内的有效负载,并且您仍然需要在服务器上对它做些什么,然后将其推回去。


    您可能需要调整regexp来处理空格。

        2
  •  0
  •   Ofir    15 年前

    我的直觉告诉我,对于如此大量的关键字——排序关键字和创建每个字符的状态机将比正则表达式快得多,因为状态机是微不足道的,它可以自动生成。

        3
  •  0
  •   Ofir    15 年前

    状态机似乎经常用于类似的任务,例如 http://www.codeproject.com/KB/string/civstringset.aspx