我有一个代码,其总体目标是从字符串中提取两个数字。
我得到一个位于单元格数组中的字符串。为了简化这个例子,我在代码中的select *
from user_objects
where status = 'INVALID'
下面创建了字符串。我想在一个单元格中提取test
,在第二个单元格中提取2。我所做的代码工作正常,但我认为它可以被优化(速度和浓缩)很多。你们有没有任何建议?
代码:
1400
答案 0 :(得分:0)
这实际上取决于你的一般结构。对于这种情况,您可以使用以下命令将字符串拆分为冒号,空格和破折号:
A = strsplit(test{1,1},{':',' ','-'});
然后简单地提取两个数字作为第二和第四个元素
Dilut1=str2num(A{2});
Fold1 = str2num(A{4});
但正如所说,它真的归结为你的一般结构。代码越长,您需要考虑的案例就越多。
因此,如果你能写出像
这样的东西可能会更好test{1,1}='1 dilute 1400 fold 2';
然后你可以在空格处分割,搜索你感兴趣的单词,然后下一个字符串就是数字,即
A = strsplit(test{1,1});
Dilute = str2num(A{circshift(strcmp(A,'dilute'),1)})
Fold = str2num(A{circshift(strcmp(A,'fold'),1)})