优化字符串拆分和提取的代码

时间:2018-04-19 18:25:36

标签: matlab

我有一个代码,其总体目标是从字符串中提取两个数字。

我得到一个位于单元格数组中的字符串。为了简化这个例子,我在代码中的select * from user_objects where status = 'INVALID' 下面创建了字符串。我想在一个单元格中提取test,在第二个单元格中提取2。我所做的代码工作正常,但我认为它可以被优化(速度和浓缩)很多。你们有没有任何建议?

代码:

1400

1 个答案:

答案 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)})