Extracting number from a string

4 views (last 30 days)
captainmariah
captainmariah on 30 Mar 2021
Edited: Stephen23 on 30 Mar 2021
Hi, I want to extact the number from this string.
res_str ='TotalPower:9,7406E+00Watts'
I used below to find the index of the semi-colon, but how can I get the number from this format?
index = strfind(res_str, ':')-1
theNumber = str2double(res_str(index:21)) % - gives just NAN
Want to find the number positions (the start and end of the number, i.e. pos 12 and 21 in this case) and convert this to a number 9.7406E00
theNumber = (res_str(12:21))
theNumber =
'9,7406E+00'
Many thanks

Accepted Answer

Stephen23
Stephen23 on 30 Mar 2021
str = 'TotalPower:9,7406E+00Watts';
num = sscanf(strrep(str,',','.'),'%*[^:]:%f')
num = 9.7406
  2 Comments
captainmariah
captainmariah on 30 Mar 2021
Edited: captainmariah on 30 Mar 2021
Thank you, I managed to get the number after some fail and trial, but its not as sleek as this code. My attempt.
index1 = strfind(res_str, ':')+1;
index2 = strfind(res_str, 'W')-1;
theNumber = res_str(index1:index2);
totalPower=str2double(theNumber);
What does this part do?
%*[^:]:%f
Stephen23
Stephen23 on 30 Mar 2021
Edited: Stephen23 on 30 Mar 2021
"What does this part do?"
That defines the format for extracting data from the string: read the sscanf documentation to know more.
... %*[^:]:%f Three distinct parts of the format string:
... %*[^:] Read and discard all non-colon characters
... : Literal colon character
... %f Read number, including optional exponent

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!