;; | ----------------------------------------------------------------------------- ;; | TX_TitleCase ;; | ----------------------------------------------------------------------------- ;; | Function : Change given word to Title case (eg. RAKESH RAO becomes Rakesh Rao) ;; | Argument : 'word' - String to be converted to title case. ;; | Return : None ;; | Update : March 24, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ----------------------------------------------------------------------------- (defun TX_TitleCase(Word / len tmp Lst _Word) (setq len (strlen Word)) (cond ((= len 1) (setq Word (strcase Word)) ) ((> len 1) (setq Word (strcat (strcase (substr Word 1 1)) (strcase (substr Word 2) T ))) ) ) ;; Exceptions Handling (Handles cases like McDonnalds) (if (and (> len 2) (= (setq tmp (substr Word 1 2)) "Mc")) (setq Word (strcat tmp (strcase (substr Word 3 1)) (if (> len 3) (substr Word 4) ""))) ) ;; Exceptions Handling (Handles Abbreviations having a dot "." or "/" in them) (foreach _tmp (list "." "/") (setq Lst (ST_StrTok Word (list _tmp))) (if Lst (progn (setq _Word "") (foreach tmp Lst (setq len (strlen tmp) _Word (strcat _Word (strcase (substr tmp 1 1)) (if (> len 1) (substr tmp 2) "") _tmp) ) ) (setq Word (substr _Word 1 (1- (strlen _Word)))) )) ) ;; Exceptions Handling (Handles Cases like 'n') (if (and (> len 2) (member (substr Word 1 1) (list "'" "`" "~"))) (setq Word (strcat (substr Word 1 1) (TX_TitleCase (substr Word 2)))) ) ;; Exceptions Handling (Handles Cases like D'Souza and L'Oreal) (if (and (> len 2) (member (substr Word 2 1) (list "'" "`" "~"))) (setq Word (strcat (substr Word 1 2) (TX_TitleCase (substr Word 3)))) ) (if (member (setq tmp (strcase Word)) #AbbrLst) (setq Word tmp) ) (if (setq tmp (assoc Word #SubstLst)) (setq Word (cadr tmp)) ) Word )