Tôi hiểu rằng điều này là tầm thường với một if, nhưng có một tùy chọn, giống như %S
hoặc %s
nội suy nil như không có chuỗi nào cả?
Thí dụ:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
Có, nội suy chuỗi là thuật ngữ đúng để sử dụng. Đó là một biến thể về chủ đề trích dẫn / macro, trong đó các chuỗi được tạo bằng các mẫu.
—
wvxvw
Đó là một câu hỏi hay. Xem xét yêu cầu một
—
Drew
format
chỉ số cho điều này (sử dụng M-x report-emacs-bug
cho điều đó). Phần còn lại của chúng tôi đã quen với việc sử dụng concat
cho việc này, đôi khi kết hợp với format
(đối với các chuyển đổi khác). Hoặc khác chuyển một đối format
số như (if something "foobar" "")
, tương ứng với format
chỉ báo "%s"
.
FYI - Tôi vừa gửi yêu cầu nâng cao như vậy (# 19975), vì vậy bạn không cần phải làm vậy. (Đáng lẽ phải làm điều đó từ nhiều năm trước.)
—
Drew
Nghe có vẻ như là một cách khá mơ hồ để xây dựng một biểu thức chính quy (có thể xem xét sử dụng
—
phils
rx
macro trong kịch bản như vậy. Tối thiểu hãy chắc chắn rằng bạn đang sử regexp-quote
dụng phù hợp), nhưng điều đó sang một bên nếu bạn có một số lượng lớn các chuỗi có thể trong LIST bạn có thể luôn luôn làm một cái gì đó như (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST))
. Tất nhiên nếu chuỗi định dạng của bạn đúng theo nghĩa đen "%s%s%s"
, thì concat
thực sự có ý nghĩa hơn.
interpolation
thẻ.