【问题标题】:how to improve the code efficiency of "deleting all 'newline' except last one in one string"?如何提高“删除除最后一个字符串之外的所有'换行符'”的代码效率?
【发布时间】:2015-04-25 04:30:05
【问题描述】:

我想通过清除每条日志消息中的所有换行符来过滤日志数据。下面是我的代码,但是看起来效率很低,如何改进呢?

character_drop_test_b()->
    List = "AB\nC\nD\n",
    Result = re:replace(List, "[\n]", "", [global, {return, list}]) ++ "\n",
    Result.

【问题讨论】:

  • 是什么让你觉得它“低效”?尽管普遍认为,基本的 RE 速度很快。它正在编译可能很耗时的正则表达式。但你可以提前compile 它。
  • 感谢您的评论。

标签: erlang


【解决方案1】:

由于您替换的是固定字符串而不是模式,因此您不需要使用正则表达式。试试这个:

string:join(string:tokens(List, "\n"), "") ++ "\n"

根据我的测量,它比您在小型 List 上的方法快 3 倍,比您在由 1000 个 List 数据副本组成的列表上的方法快 6 倍。

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 2014-11-08
    • 2019-07-05
    • 2022-11-23
    • 1970-01-01
    • 2018-05-28
    • 2023-01-30
    • 2013-04-23
    • 1970-01-01
    相关资源
    最近更新 更多