@gcsjlewisI will rephrase your request, and make it more generic solution. Here is a function that concatenates elements of the list of arbitrary length with some concatenation symbol (string), and removes all elements of the list that equal nil. If all elements of the list are nil it will return string " " to suppress potential error if function is joined with other string dealing function.
Usage: (cancan (list DESCA DESCB DESCC DESCD) "-")
(defun cancan (lst csym / i j str lst mklist)
(defun mklist (obj)(if (listp obj)obj(list obj)))
(cond
((= (type csym) 'STR)
(setq
i -1
str ""
lst (vl-remove nil (mklist lst))
)
(cond ((and lst)
(setq lst (mapcar 'vl-princ-to-string lst) j (- (length lst)1))
(while (< (setq i (1+ i)) j)(setq str (strcat str (nth i lst) csym)))
(strcat str (last lst)))
(T " ")
)
)
(T (princ "\nConcatenation symbol is not a string!")(princ))
)
)
Miljenko Hatlak

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.