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ư %Shoặc %snộ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
formatchỉ số cho điều này (sử dụng M-x report-emacs-bugcho điều đó). Phần còn lại của chúng tôi đã quen với việc sử dụng concatcho 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 formatsố như (if something "foobar" ""), tương ứng với formatchỉ 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
rxmacro 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-quotedụ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ì concatthực sự có ý nghĩa hơn.
interpolationthẻ.