まで、後続の文字で埋めます。マッチ大文字と私は、たとえば、キャメルケースの文字列を持っている特定の文字列の長さ
私はこれらの規則に従うことで長さ4の文字列を形成したいと思います:
- すべて大文字をつかみます。
- は、4つの以上の大文字場合は、最初の4保ちます。
- :
- 4未満の大文字の場合、長さはここ4
なるまで、最後大文字に続く文字を大文字にし、追加が発生する可能性があり3例があります
ThisIsMyString
TIMS
(大文字)をもたらします。 TIOV
(第4大文字)をもたらします。MyString
は、MSTR
(大文字tr
が大文字)となります。
ThisIsOneVeryLongString
私はこのスニペットと最初の2例を解決するために管理:
str.scan(/[A-Z]/).first(4).join
はしかし、私はどのように私は最高のも最後のケースを扱う(あるいはしようとするために、上記のスニペットを変更することができ、非常にわかりません何か違います)。
P .:文字列は、少なくとも大文字と4文字を持つことが保証されています。しかし、理論的に資本がない場合は、最初の4文字を考慮する必要があります。 4文字がない場合、欠けている文字は最初のアルファベット文字(abcd
)で埋められることがあります。しかし、前述したように、これら2つのエッジケースは通常は起こりません。ここで
ニース、アンドリュー。 'str.gsub(/ [^ A-Z] +([A-Z])/、 '\ 1')[0,4] .upcase'と書くこともできます。 –
これは本当にきれいです!ありがとうございました! – linkyndy