gpt4 book ai didi

regex - 在 elisp 中寻找替换字符串函数

转载 作者:行者123 更新时间:2023-12-02 04:28:01 24 4
gpt4 key购买 nike

我正在寻找仅使用文字字符串而不使用正则表达式的 replace-regexp-in-string 的等效项。

(replace-regexp-in-string "." "bar" "foo.buzz") => "barbarbarbarbarbarbarbar"

但我想要

(replace-in-string "." "bar" "foo.buzz") => "foobarbuzz"

我尝试了各种 replace-* 函数,但无法弄清楚。

编辑

作为对详细答案的返回,我决定对它们进行基准测试(是的,我知道所有基准测试都是错误的,但它仍然很有趣)。

benchmark-run 的输出是(时间,垃圾回收次数,GC 时间):

(benchmark-run 10000
(replace-regexp-in-string "." "bar" "foo.buzz"))

=> (0.5530160000000001 7 0.4121459999999999)

(benchmark-run 10000
(haxe-replace-string "." "bar" "foo.buzz"))

=> (5.301392 68 3.851943000000009)

(benchmark-run 10000
(replace-string-in-string "." "bar" "foo.buzz"))

=> (1.429293 5 0.29774799999999857)

用带引号的正则表达式替换字符串中的正则表达式获胜。临时缓冲区的表现非常好。

编辑2

现在可以编译了!必须进行 10 倍以上的迭代:

(benchmark-run 100000
(haxe-replace-string "." "bar" "foo.buzz"))

=> (0.8736970000000001 14 0.47306700000000035)

(benchmark-run 100000
(replace-in-string "." "bar" "foo.buzz"))

=> (1.25983 29 0.9721819999999983)

(benchmark-run 100000
(replace-string-in-string "." "bar" "foo.buzz"))

=> (11.877136 86 3.1208540000000013)

haxe-replace-string 看起来不错

最佳答案

试试这个:

(defun replace-in-string (what with in)
(replace-regexp-in-string (regexp-quote what) with in nil 'literal))

关于regex - 在 elisp 中寻找替换字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17325713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com