How to extract string from a character variable?

Accepted Solution Solved
Reply
Regular Contributor
Posts: 161
Accepted Solution

How to extract string from a character variable?

Hi, everyone:

Just wondering how to extract the red portion of the following strings?

client/data/20/0000893220-98-000530.txt

client/data/810084/0001193125-08-059176.txt

client/data/914208/0000950129-07-000703.txt

client/data/1036213/0001036213-98-000015.txt

client/data/1103345/0001103345-05-000031.txt

client/data/1161175/0000950123-10-012321.txt

The red string always fall between the third slash and the .txt portion.

I understand I need to use anypunct and anynum to solve this problem.  However, after several try, I still get 0.  Thank you!


Accepted Solutions
Solution
‎07-01-2013 02:05 AM
Super User
Posts: 9,682

Re: How to extract string from a character variable?

data _null_;
input x $100.;
y=scan(x,-2,'./');
put x= y=;
cards;
client/data/20/0000893220-98-000530.txt
client/data/810084/0001193125-08-059176.txt
client/data/914208/0000950129-07-000703.txt
client/data/1036213/0001036213-98-000015.txt
client/data/1103345/0001103345-05-000031.txt
client/data/1161175/0000950123-10-012321.txt
;
run;

Ksharp

View solution in original post


All Replies
Solution
‎07-01-2013 02:05 AM
Super User
Posts: 9,682

Re: How to extract string from a character variable?

data _null_;
input x $100.;
y=scan(x,-2,'./');
put x= y=;
cards;
client/data/20/0000893220-98-000530.txt
client/data/810084/0001193125-08-059176.txt
client/data/914208/0000950129-07-000703.txt
client/data/1036213/0001036213-98-000015.txt
client/data/1103345/0001103345-05-000031.txt
client/data/1161175/0000950123-10-012321.txt
;
run;

Ksharp

Regular Contributor
Posts: 161

Re: How to extract string from a character variable?

Thank you, Ksharp and sunilzood!  It works like charm on my data.  Could you explain a little bit of the more about the

y=scan(x,4,'./');

Especially, the 4 and ./ part, since there are multiple slashes...  Thank you!

Super User
Posts: 9,682

Re: How to extract string from a character variable?

4 means the fourth part.

./ means take both . and / as separator .

Regular Contributor
Posts: 161

Re: How to extract string from a character variable?

Wow, this is concise!

Contributor
Posts: 29

Re: How to extract string from a character variable?

Ksharp solution is Perfect , But when I tried it skipped alternate rows. A little modification just by adding " : "  will work perfect.  Please try:

data _null_;

input x : $  100.;

y=scan(x,4,'./');

put x= y=;

cards;

client/data/20/0000893220-98-000530.txt

client/data/810084/0001193125-08-059176.txt

client/data/914208/0000950129-07-000703.txt

client/data/1036213/0001036213-98-000015.txt

client/data/1103345/0001103345-05-000031.txt

client/data/1161175/0000950123-10-012321.txt

;

run;

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 258 views
  • 6 likes
  • 3 in conversation