删除字符串元胞数组的一部分

Deleting part of a strings-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

使用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));