如何提取一个字符串中间的数字部分?
比如一系列字符串:'H100L200'、'H200L300',我想把H之后和L之后的数字提取出来分别存储成两个数值变量,该如何操作?回复 楼主 vincentsuen 的帖子
看看这几个帖子http://forum.vibunion.com/forum/viewthread.php?tid=34272&highlight=%CA%FD%D7%D6
http://forum.vibunion.com/forum/viewthread.php?tid=8937&highlight=%CA%FD%D7%D6
http://forum.vibunion.com/forum/thread-45622-1-1.html help regexp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clear
clc
str1='H100L200';
a1=regexp(str1,'');
% num1=str1(a1); 提取离散数字
aa1=diff(a1);
num1=[];
num=zeros(1,length(a1));
j=1;
for i=1:length(aa1)
if aa1(i)==1
num1=;
else
num1=;
num(j)=str2num(num1);
j=j+1;
num1=[];
end
if (i==length(aa1)) && (aa1(end)==1)
num1=;
num(j)=str2num(num1);
end
end
clear num1
disp(num)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100 200 0 0 0 0 原帖由 friendchj 于 2009-1-17 15:15 发表 http://www.chinavib.com/forum/images/common/back.gif
help regexp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clear
clc
str1='H100L200';
a1=regexp(str1,'');
% num1=str1(a1); 提取离散数字
aa1=diff(a1);
num1=[];
num=zeros(1,length(a1));
j=1;
...
感谢friend兄的热心肠,你的方法是可行的。不过我又找到了处理字符和数字同行的更简便的方法,全靠大家都启发。
clear;
clc;
filename='H100L200.txt';
= fileparts(filename);
locl=findstr(name,'L');%字符L在字符串中的位置
longh=locl-2;%H数据长度
longl=length(name)-locl;%L数据长度
strh=name(2:locl-1);%取出H的字符
strl=name(locl+1:length(name));%取出L的字符
hh=str2num(strh);
ll=str2num(strl);
回复 楼主 vincentsuen 的帖子
3楼的比较一般化! 试试下面, 可能较易懂!str1='H100L200';
hh=findstr(str1,'H'); ll=findstr(str1,'L');
No1=str2num(str1(hh+1:ll-1)); No2=str2num(str1(ll+1:end));
非常抱歉!! 个人习惯进入论坛即查新帖, 连开好几十帖再一一看!
时常就解决了还不知! 帮看看是否需删!
[ 本帖最后由 ChaChing 于 2009-1-17 16:51 编辑 ] 原帖由 ChaChing 于 2009-1-17 16:44 发表 http://www.chinavib.com/forum/images/common/back.gif
3楼的比较一般化! 试试下面, 可能较易懂!
str1='H100L200';
hh=findstr(str1,'H'); ll=findstr(str1,'L');
No1=str2num(str1(hh+1:ll-1)); No2=str2num(str1(ll+1:end));
非常抱歉!! 个人习惯进入论 ...
代码更精简!赞一个!
clear;clc
str1='A3B56C58$@41NF'; %str2='H100L200';
R=regexp(str1,'\d{1,}','match');
for i=1:length(R)
eval(sprintf('No(%d)=str2num(R{%d});',i,i));
end
No
No =
3 56 58 41
页:
[1]