String parsing with a delimiter

Hello, I’m having a little problem parsing a string using a delimiter. It leave the delimiter attached to my string. Here’s my code:
str = counter=10;count=7;;
[token, remain] = strtok(str, '=');
switch token
case 'counter'
[token1, remain1] = strtok(remain, ';');
counter = str2double(token1);
end
token comes out right but remain has the value of “=10;count=7;” so when I do my next strtok my token1 has a value of “=10”’. Is there any way to parse to a delimiter and remove it from my string in matlab? Thanks.

 Akzeptierte Antwort

Matt Kindig
Matt Kindig am 16 Mai 2012

1 Stimme

To expand upon that, you can do something like this to loop through the entire string.
str = 'counter=10;count=7';
parts = regexp( str, '(?<arg>\w+)=(?<val>\d+);', 'names');
for k=1:length(parts),
arg = parts(k).arg;
switch arg,
case 'counter',
counter = str2double(parts(k).val);
case 'count',
%do something else.
%add additional cases as necessary.
end
end

1 Kommentar

Matt Kindig
Matt Kindig am 16 Mai 2012
Glad I could be of assistance. Regular expressions are super-powerful once you learn them. I highly recommend looking them up in the Matlab help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt Kindig
Matt Kindig am 16 Mai 2012

1 Stimme

What is your desired output? You might be able to do this easier with regular expressions.
doc regexp

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by