How can i read multiple values in a string?

9 views (last 30 days)
Hi guys,
I have a problem getting some values.
Basically, i have a variable (string) that always has the same format but with a variable length.
Some examples:
  1. " H:2T:16799C:7| H:2T:16803C:15 | H:1T:17399C:11 "
  2. " H:4T:16500C:7 "
  3. " H:6T:568C:20| H:5T:313929C:11 "
How we can see, the variable has the same format in all examples but can have a variable number of repetitions.
I want to read the values, for the first example: 2 - 16799 - 7 | 2 - 16803 - 15 | 1 - 17399 - 11.
How can i do this dynamically? To be able to read in all cases.

Accepted Answer

Joel Handy
Joel Handy on 12 Aug 2019
Edited: Joel Handy on 12 Aug 2019
I believe a regular expression along these lines is what you are looking for.
data = regexp('1º:" H:2T:16799C:7| H:2T:16803C:15 | H:1T:17399C:11 "', ...
'H:(?<H>\d+)T:(?<T>\d+)C:(?<C>\d+)', 'names')
H = str2double({data.H})
T = str2double({data.T})
C = str2double({data.C})
If these are all lines in a file, you can read the entire file into a signle string and process everything at once.
MyString = sprintf('1º:" H:2T:16799C:7| H:2T:16803C:15 | H:1T:17399C:11 "\n2º:" H:4T:16500C:7 "\n3º:" H:6T:568C:20| H:5T:313929C:11 "')
regexp(MyString, 'H:(?<H>\d+)T:(?<T>\d+)C:(?<C>\d+)', 'names')
  1 Comment
Marco Silva
Marco Silva on 12 Aug 2019
The regular expression works perfectly. Thank you !!

Sign in to comment.

More Answers (0)


Find more on Entering Commands in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!