# adding space before capital letters in variable names

24 views (last 30 days)
Sara on 18 Dec 2012
if I'm converting a variable name to a string in a function, how can I put a space before every capital letter in the input variable? eg, if the input is:
varNameOne
how can I convert this to
var name one
for formatting legend entries?
##### 1 CommentShowHide None
Jan on 18 Dec 2012
Please use meaningful tags only. I do not see a connection to "legends" or "varargin" here.

Image Analyst on 18 Dec 2012
Edited: Image Analyst on 18 Dec 2012
Thinking that this may be homework, here's a hint:
s = 'varNameOne'
upperCaseIndexes = s >= 'A' & s <= 'Z'
Some related File Exchange submissions:

### More Answers (4)

Ryan G on 18 Dec 2012
Try the code in this thread:
% a string
s='varNameOne';
% the engine
ix=ismember(s,'A':'Z');
Then input the space (credit to Walter from a newsgroup thread circa 2008)
V = s;
P = find(ix==1)-1;
N = ' ';
for i = 1:numel(P)
V = [diag(kron(V.',ones(1,P(i))));N;flipud(diag(kron(flipud(V.'),ones(1,length(V)-P(i)))))].'
P = P+1;
end
##### 2 CommentsShowHide 1 older comment
Image Analyst on 18 Dec 2012
Wow - clear as mud to me!

Daniel Shub on 18 Dec 2012
Edited: Daniel Shub on 18 Dec 2012
You can use REGEXPREP. To just add a space before every uppercase letter
regexprep('varNameOne', '([A-Z])', ' \$1')
To add a space before every uppercase letter and convert that letter to lower case
regexprep('varNameOne', '([A-Z])', ' \${lower(\$1)}')

Jan on 18 Dec 2012
Edited: Jan on 18 Dec 2012
S = 'varNameOne';
up = isstrprop(s, 'upper');
T = blanks(length(S) + sum(up));
T(cumsum(up + 1)) = lower(S);

Jan on 18 Dec 2012
Actually I assume that this is a homework, too. It will not be easy to submit one of these solutions without cheating. And of course your teacher knows this forum also. Nevertheless, it is a funny problem and I think, if you spend the time to find out, how each of the solution works, you will have learned enough for today. But do not expect, that we solve homeworks in general.
S = 'varNameOne';
T(1, 2:end) = lower(S);
T(2, isstrprop(S, 'upper')) = ' ';
T = reshape(T(~~T)), 1, []);
##### 2 CommentsShowHide 1 older comment
Sara on 18 Dec 2012
No, this isn't homework. It's part of a function which turns takes the name of input variables and uses that to create legend entries and filenames (no, NOT dynamic variable names). I wrote another question about five minutes before this one which gave more background detail, but accepted an answer too quickly. The input variable names do use varargin, and this IS for formatting legend entries automatically, but I see your point about tags.