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

 Accepted Answer

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

More Answers (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.

Categories

Products

Asked:

on 21 Nov 2014

Edited:

on 22 Nov 2014

Community Treasure Hunt

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

Start Hunting!