タイトルの通り、キャメルケースの分割(split)をします。実装はC#。
正規表現で頑張る方法もあるようですが、ちょっとややこしいのとパフォーマンス的に嬉しくないことは容易に想像できるので、愚直な方法で実装します。
厳密なキャメルケースであれば、IDのような単語は、idやIdとなると思いますが、そのままIDと書くこともあるため、そのパターンにも対応します。スネークケースとの混用も対応します。先頭と末尾のアンダースコアは無視します。
例えば、_abcFOOBar123_456hoge__HOGE_
ならばabc
、FOO
、Bar
、123
、456
、hoge
、HOGE
に分割します。
実装
識別子として有効な文字種は、アルファベット大/小、数字、アンダースコアに限られるとして、これら文字種をenumで定義します。charの拡張メソッドで文字種判定を実装し、キャメルケース分割はstringの拡張メソッドとして実装します。
文字種判定はIsDigit()やIsUpper()、IsLower()が標準機能としてあるものの、ここではASCIIだけ見たいのにUnicodeでチェックされるのがイマイチなので自作処理で判定します。
想定外の文字が入力された時の動作は不定です。デバッグ時はとりあえずアサートにかかるようにしました(Unityのアサートなので都合悪ければいいように置き換えてください)。