Ich bin auf der Suche nach einem Äquivalent von replace-regexp-in-string
, die nur Literal-Strings, keine regulären Ausdrücke verwendet.Suche nach einer Replace-in-String-Funktion in elisp
(replace-regexp-in-string "." "bar" "foo.buzz") => "barbarbarbarbarbarbarbar"
Aber ich will
(replace-in-string "." "bar" "foo.buzz") => "foobarbuzz"
ich verschiedene replace-*
Funktionen ausprobiert, aber kann es nicht herausgefunden.
bearbeiten
Im Gegenzug für die aufwendigen Antworten, die ich zu Benchmark ihnen entschieden (ja, ich weiß, alle Benchmarks sind falsch, aber es ist immer noch interessant).
Die Ausgabe von benchmark-run
ist (time, # garbage collections, GC time)
:
(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)
replace-regexp-in-String mit einem zitierte regexp gewinnt. Temporäre Puffer sind bemerkenswert gut.
bearbeiten 2
Jetzt mit Compilation! Hatte 10x mehr Iteration zu tun:
(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-Ersetzen-String sieht gut aus
Die Zeit für 'haxe-replace-string' ist wahrscheinlich so schlecht, weil Sie sie nicht bytekompiliert haben? 'loop' Makro macht das Kompilieren wirklich zu einem Muss, ansonsten ist es sehr langsam. –
mit einigen weiteren Nummern aktualisiert – spike
(ersetzen-regexp-in-string "\\." "Bar" "foo.buzz") => "foobarbuzz" – vitaly