What is the way to get only the desired part of the text?

1 view (last 30 days)
niniki on 23 Feb 2022
Answered: Stephen23 on 23 Feb 2022
Hello, I'm a student learning matlab on my own.
Please understand even if I don't understand the contents of the question because I lack knowledge.
It's a question.
What is the way to get only the desired part of the text?
For example
text =
Name: ABC
Age: 20
Gender: Male
Height: 180cm.
Weight: 75.
If there's a text file like this,
I'm going to store the information 20 and 180 I need in the variable 'age, height', respectively.
I'm going to use the function "extract After,
age = extractAfter(text,'age : ')
height = extractAfter(text,'height : ')
If I write the code like this, the result I want will not come out.
Can you tell me another way?
KALYAN ACHARJYA on 23 Feb 2022
Many ways:
Have you checked Table or Structure ?

Seth Furman on 23 Feb 2022
Take a look at the split and splitlines functions.
text = ['Name: ABC' newline 'Age: 20' newline 'Gender: Male' newline 'Height: 180cm.' newline 'Weight: 75.']
text =
'Name: ABC Age: 20 Gender: Male Height: 180cm. Weight: 75.'
splitlines(text)
ans = 5×1 cell array
{'Name: ABC' } {'Age: 20' } {'Gender: Male' } {'Height: 180cm.'} {'Weight: 75.' }
split(text)
ans = 10×1 cell array
{'Name:' } {'ABC' } {'Age:' } {'20' } {'Gender:'} {'Male' } {'Height:'} {'180cm.' } {'Weight:'} {'75.' }

Stephen23 on 23 Feb 2022
tkn = regexp(txt,'^(\w+):\s+(\d*\.?\d*)(\S*)','tokens','lineanchors');
tkn = vertcat(tkn{:})
tkn = 5×3 cell array
{'Name' } {0×0 char} {'ABC' } {'Age' } {'20' } {0×0 char} {'Gender'} {0×0 char} {'Male' } {'Height'} {'180' } {'cm.' } {'Weight'} {'75.' } {0×0 char}
vec = str2double(tkn(:,2))
vec = 5×1
NaN 20 NaN 180 75