2

私は文字列を持っています

string =  'one Two9three four_Five 67SixSevenEightNine';

私はそれを言葉に分割する必要があります:

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

小文字の後に大文字が続く場合、キャメルケースを除くすべてを分離することができました。

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

他の処理を行う前に、キャメルケースを交換してみませんか?

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

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