Tôi đang tìm kiếm một số tương đương replace-regexp-in-string
chỉ sử dụng chuỗi ký tự, không có cụm từ thông dụng.Tìm kiếm một hàm thay thế trong chuỗi trong elisp
(replace-regexp-in-string "." "bar" "foo.buzz") => "barbarbarbarbarbarbarbar"
Nhưng tôi muốn
(replace-in-string "." "bar" "foo.buzz") => "foobarbuzz"
tôi đã cố gắng nhiều replace-*
chức năng nhưng không thể tìm nó ra.
Sửa
Đổi lại cho câu trả lời phức tạp tôi quyết định điểm chuẩn cho họ (yea, tôi biết tất cả các tiêu chuẩn là sai, nhưng nó vẫn còn thú vị).
Kết quả của benchmark-run
là (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 với một chiến thắng regexp trích dẫn. Bộ đệm tạm thời hoạt động tốt.
Chỉnh sửa 2
Bây giờ với biên soạn! Phải làm 10x nhiều lần lặp:
(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-thay-chuỗi được tìm kiếm tốt
Thời gian cho 'haxe-replace-string' có thể quá tệ vì bạn không biên dịch byte? 'loop' macro thực sự làm biên dịch phải, nó rất chậm nếu không. –
được cập nhật với một số số khác – spike
(thay thế-regexp-in-string "\\." "Bar" "foo.buzz") => "foobarbuzz" – vitaly