Sto cercando un equivalente di replace-regexp-in-string
che utilizza solo stringhe letterali, nessuna espressione regolare.Ricerca di una funzione di sostituzione in stringa nell'elite
(replace-regexp-in-string "." "bar" "foo.buzz") => "barbarbarbarbarbarbarbar"
Ma io voglio
(replace-in-string "." "bar" "foo.buzz") => "foobarbuzz"
ho provato vari replace-*
funzioni, ma non si può capire.
Modifica
In cambio delle risposte elaborate ho deciso di loro riferimento (sì, lo so tutti i parametri di riferimento sono sbagliati, ma è comunque interessante).
L'uscita del benchmark-run
è (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-stringa con un vittorie regexp citati. I buffer temporanei funzionano molto bene.
Edit 2
Ora con compilation! Ha dovuto fare 10 volte di più di iterazione:
(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 sta cercando bene
Il tempo per 'haxe-replace-string' è probabilmente così grave perché non lo hai compilato in byte? La macro 'loop' rende davvero la compilazione un must, altrimenti è molto lenta. –
aggiornato con altri numeri – spike
(replace-regexp-in-string "\\." "Bar" "foo.buzz") => "foobarbuzz" – vitaly