2

我有一个字符串

string =  'one Two9three four_Five 67SixSevenEightNine';

我需要将其拆分为:

'one' 'two' 'three' 'four' 'five' 'six' 'seven' 'eight' 'nine'

当小写字母后跟大写字母时,我设法将除了 CamelCase 之外的所有字母分开:

while ~isempty(string)
        [str,string] = ...
           strtok(string, ...
                  [' ~@$/#.-:&*+=[]?!(){},''">_<;%' char(9) char(10) char(13) '0-9']);
       str = regexprep(str, '[0-9]','');
end

我也可以获得模式的索引,但只有当我知道如何在其间插入空格或某些字符时,我才能再次使用上面的代码拆分成单词:

pattern = '[a-z][A-Z]+';
[pat,idx]=regexp(str, pattern,'match');

有任何想法吗?谢谢!

4

1 回答 1

2

为什么不在进行其他处理之前更换 camelCase?

newstring = regexprep(string, '([a-z])([A-Z])', '$1 $2');

while ~isempty(newstring)
...
于 2012-05-21T21:41:43.147 回答