DATA Step, Macro, Functions and more

Extract within a string

Reply
Occasional Contributor
Posts: 12

Extract within a string

Hi 

 

I am tring to extract the number following the id= from within this string below

 

http://www.blahblah/blahblah/confirmation?id=1234567&media=12345

Super User
Posts: 10,500

Re: Extract within a string

There are several ways depending on consistency of your input stream.

Here are two.

data want;
   string='http://www.blahblah/blahblah/confirmation?id=1234567&media=12345';
   /* if the ID ALWAYS appears in the same place*/
   oneway= scan(string,2,'=&');
   /* or if ID may appear in other locations*/
   /*find position of id=*/
   pos1 = index(string,'id=');
   /* find position of & AFTER the first position*/
   pos2= find(string,'&',pos1);
   otherway = substr(string,pos1+3,pos2-(pos1+3));
   /* not if your target string value exceeds 8 characters you should declare a length
   prior to use*/

run;

If the value needs to be actually numeric then you could use an INPUT such as

 

oneway = input(scan(string,2,'=&'),best16.);

But if there were any values not numeric such as id=123ABC456 that would fail.

Occasional Contributor
Posts: 12

Re: Extract within a string

Excellent thanks for the reply!

Ask a Question
Discussion stats
  • 2 replies
  • 188 views
  • 0 likes
  • 2 in conversation