- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
4 means the fourth part.
./ means take both . and / as separator .
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Wow, this is concise!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;