How to take only first part of the string

3 vues (au cours des 30 derniers jours)
Kanakaiah Jakkula
Kanakaiah Jakkula le 30 Sep 2017
Modifié(e) : OCDER le 30 Sep 2017
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

Réponses (2)

Cedric
Cedric le 30 Sep 2017
Modifié(e) : Cedric le 30 Sep 2017
Assuming that all cells content is of class char:
B = [A(:,1), cellfun(@(s)regexp(s, '\S+', 'match', 'once'), A(:,2:3), 'UniformOutput', false)] ;

OCDER
OCDER le 30 Sep 2017
Modifié(e) : OCDER le 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'

Catégories

En savoir plus sur Coordinate Systems dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by