如何提高“删除所有'新行'除一个字符串中的最后一个'的代码效率”?

问题描述:

我想通过清除每条日志消息中的所有新行字符来过滤日志数据。以下是我的代码,但效率似乎很低,如何改进呢?如何提高“删除所有'新行'除一个字符串中的最后一个'的代码效率”?

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

是什么让你觉得它是“低效率”?尽管普遍认为,基本的RE很快。它正在编译可能非常耗时的正则表达式。但你可以[编译](http://erlang.org/doc/man/re.html#compile-1)。 –

+0

谢谢您的评论。 –

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

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

通过我的测量,它比你的方法快上你的小List 3倍,比你的方法一的List数据的1000个拷贝组成的列表6X更快。