## Retrieve Value from a string

Solved
Occasional Contributor
Posts: 15

# Retrieve Value from a string

Hi all,

I need help with the following:

I have a 2 variables in a dataset

n= number

label = string e.g. X!3.479!3.49902!3.43968!3.49919!3.5432!3.69513!3.52109!3.53714!

What I need to do is - retrieve the 'n' th value (seperated by "!").

For example:

n= 2

value= 3.49902

Im guessing I need to use a scan?

Many thanks

Accepted Solutions
Solution
‎02-10-2014 09:36 AM
Super User
Posts: 6,756

## Re: Retrieve Value from a string

jammy,

Yes, you'll need SCAN.  However, SCAN alone will create VALUE as a character variable:

value = scan(string, n, '!');

If you want VALUE as a numeric variable, you'll have to apply the INPUT function to the result returned by the SCAN function:

value = input( scan(string, n, '!'), 8.);

It won't hurt to use a length of 8 in the INPUT function when the incoming string contains fewer than 8 characters.  Good luck.

All Replies
Super User
Posts: 5,876

## Re: Retrieve Value from a string

Yes

Data never sleeps
Occasional Contributor
Posts: 15

## Re: Retrieve Value from a string

My bad..... I was trying to make it more complicated than it is!

Cheers

Solution
‎02-10-2014 09:36 AM
Super User
Posts: 6,756

## Re: Retrieve Value from a string

jammy,

Yes, you'll need SCAN.  However, SCAN alone will create VALUE as a character variable:

value = scan(string, n, '!');

If you want VALUE as a numeric variable, you'll have to apply the INPUT function to the result returned by the SCAN function:

value = input( scan(string, n, '!'), 8.);

It won't hurt to use a length of 8 in the INPUT function when the incoming string contains fewer than 8 characters.  Good luck.

Posts: 1,147

## Re: Retrieve Value from a string

Also if you want to know the different nth values, try the below code

data have;

string="X!3.479!3.49902!3.43968!3.49919!3.5432!3.69513!3.52109!3.53714!";

do i = 1 to 10;

new=scan(string,i,'!');

output;

end;

run;

Thanks,

Jag

Thanks,
Jag
🔒 This topic is solved and locked.