How do I parse this string?
3 次查看(过去 30 天)
显示 更早的评论
I would like to parse the following string
a='4:256404:val=9.999e+20:val=1.82:val=2.15:val=2.66:val=2.18:val=1.81';
to obtain the vector x = [9.999e+20 1.82 2.15 2.66 2.18 1.81]. In reality the string is 5308 characters long and there are very many of them. I believe I can't parse this with regexp because I want to separate with a defined sequence ':val='. I could do the following, but is there a cleaner way?
matchThisString = ':val=';
iBreak = findstr(a, matchThisString);
x = NaN*ones(1, (length(iBreak)-1));
for ii = 1:(length(iBreak)-1)
iStart = iBreak(ii) + length(matchThisString);
iEnd = iBreak(ii + 1) - 1;
x(ii) = str2num(a(iStart:iEnd));
end
0 个评论
采纳的回答
Azzi Abdelmalek
2013-1-30
编辑:Azzi Abdelmalek
2013-1-30
a='9.999e+20:val=1.82:val=2.15:val=2.66:val=2.18:val=1.81'
b=str2double(regexp(a,':val=','split'))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 String Parsing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!