DATA Step, Macro, Functions and more

How to up case only first letter and last letter of a word?

Reply
Regular Learner
Posts: 1

How to up case only first letter and last letter of a word?

 
Super User
Posts: 17,758

Re: How to up case only first letter and last letter of a word?

You can cobble together some string functions, primarily, SUBSTR(), PROPCASE() and UPCASE().  

This would be a brute force method.

 

data want;
input word $;
word2 = catt(propcase(substr(word, 1, length(word)-1)), 
			upcase(substr(word, length(word), 1)));
cards;
word
random
mIxed
CASE
WORDS
;
run;

proc print;run;
Super User
Posts: 10,470

Re: How to up case only first letter and last letter of a word?

Is your actual data going to contain any spaces imbedded?

Respected Advisor
Posts: 4,641

Re: How to up case only first letter and last letter of a word?

Or harness the power of regular expressions:

 

data have;
length str $40;
input str &;
cards;
word
random
mIxed
CASE
WORDS
Whole string of words.
a ab abc abc-def
;

data want;
if not prx1 then prx1 + prxParse("s/\b(\w?)(\w*)(\w)\b/\u\1\L\2\E\u\3/");
set have;
length StrinG $40;
StrinG = prxChange(prx1, -1, str);
drop prx1;
run;

proc sql; select * from want; quit;
PG
Ask a Question
Discussion stats
  • 3 replies
  • 199 views
  • 0 likes
  • 4 in conversation