Find within string, location where space doesn't occur before upper (capital) letter

I have multiple strings from excel file and would like to do the following.
string='GeneralCase and UpperManagement'
So I would like to extract first
'General'
then
'Case and Upper'
then
'Management'
Is this possible using regexp?
Thanks in advance for your help

 Akzeptierte Antwort

To get the indices
ind = regexp(string, '(^|[^ ])[A-Z]');
To extract the strings from the indices
L{1} = string(1:ind(2));
for i=2:numel(ind)-1
L{end+1} = string(ind(i)+1:ind(i+1));
end
if numel(ind) > 1
L{end+1} = string(ind(end)+1:end);
end

Weitere Antworten (1)

A simpler solution can be achieved in one line using regexp, and without using any loops or non-preallocated cell arrays:
>> string = 'GeneralCase and UpperManagement';
>> regexp(string,'.*?[a-z](?=[A-Z]|$)','match')
ans =
'General' 'Case and Upper' 'Management'
Note that regexp also allows cell arrays of strings as it input, so you process large numbers of strings in one go using this method.

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 21 Nov. 2014

Bearbeitet:

am 22 Nov. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by