删除部分字符串单元格数组

时间:2017-10-04 12:27:10

标签: string matlab cell-array

这是我的样本数据(单元格数组)

>A_

'CUST_1627_PI425479659'   'Pri-miR-100u2'         'u2'
'CUST_2430_PI425479649'   'Pri-miR-L7a-3d'        'd'
'CUST_226_PI425479649'    'Pri-miR-3130-4u1'      'u1'
'CUST_1618_PI425479649'   'Pri-miR-147bu'         'u'
'CUST_1449_PI425479659'   'Pri-miR-107u'          'u'
'CUST_1546_PI425479659'   'Pri-miR-4299d1'        'd1'

第二列中的最后一个字符或两个最后一个字符写在第三列中。我想在第二栏中删除它们。

结果看起来应该是这样的

>A_

'CUST_1627_PI425479659'   'Pri-miR-100'       'u2'
'CUST_2430_PI425479649'   'Pri-miR-L7a-3'     'd'
'CUST_226_PI425479649'    'Pri-miR-3130-4'    'u2'
'CUST_1618_PI425479649'   'Pri-miR-147b'      'u'
'CUST_1449_PI425479659'   'Pri-miR-107'       'u'
'CUST_1546_PI425479659'   'Pri-miR-4299'      'd1'

我试过这种方式,但它没有用。

s= {'u','u1','u2','d','d1'};

for i=1:length(A_(:,2))
    A_(i,2)= erase(A_(i,2),s)
end

1 个答案:

答案 0 :(得分:0)

使用regexprep将第二列中第三列的匹配项替换为''

A_(:,2) = regexprep( A_(:,2), A_(:,3), '');

或修复使用erase的代码(在R2016b中引入):

for k=1:length(A_(:,2))
    A_(k,2) = erase(A_(k,2), A_(k,3)); %You need A_(k,3) here
end

但是...... ,因为erase可直接应用于单元格数组,所以这里不需要循环,例如。

A_(:,2) = erase(A_(:,2), A_(:,3));