How to take only first part of the string
1 view (last 30 days)
Show older comments
Hi,
I have cell matrix as below:
column1 column2 column3
HaH 16 years 14
Tay 23 23 s
YAH 24 % shift
In column2~3, I only want to take first part if it is mixed string, my desired output:
HaH 16 14
Tay 23 23
YAH 24 shift
0 Comments
Answers (2)
OCDER
on 30 Sep 2017
Edited: OCDER
on 30 Sep 2017
If dealing cell array with only strings:
A = {
'HaH' '16 years' '14';
'Tay' '23' '23 s';
'YAH' '24 %' 'shift'};
B = cellfun(@(x) sscanf(x, '%s', 1), A, 'uniformoutput', false); %scan every cell for 1st part
B =
'HaH' '16' '14'
'Tay' '23' '23'
'YAH' '24' 'shift'
If you also want to convert string part to a number ( ex: '24' to [24] )
Bnum = cellfun(@(x) sscanf(x, '%d', 1), B, 'uniformoutput', false); %scan every cell for 1st double number
NonEmptyIdx = ~cellfun(@isempty, Bnum); %mark where the numbers are in the cell
B(NonEmptyIdx) = Bnum(NonEmptyIdx); %replace string with number
B =
'HaH' [16] [ 14]
'Tay' [23] [ 23]
'YAH' [24] 'shift'
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!