Mam łańcuch wielbłądów, na przykład: JustAString
.Dopasowywanie wielkich liter i uzupełnianie kolejnymi literami, aż do uzyskania określonej długości ciągu znaków
chciałbym tworzyć ciągi długości 4 wykonując następujące zasady:
- złapać wszystkie litery;
- jeśli masz więcej niż 4 duże litery, zachowaj tylko pierwsze 4;
- jeśli mniej niż 4 litery, wykorzystać i dodać liter stanowiące kontynuację litera ostatni, aż długość staje 4.
Oto 3 przypadki, które mogą wystąpić:
ThisIsMyString
przyniesieTIMS
(wielkie litery);ThisIsOneVeryLongString
przyniesieTIOV
(pierwsze 4 stolice);MyString
przyniesieMSTR
(wielkie litery +tr
skapitalizowane).
udało mi się rozwiązać dwóch pierwszych przypadkach z tym fragmencie:
str.scan(/[A-Z]/).first(4).join
Jednak nie jestem pewien, w jaki sposób można najlepiej zmodyfikować powyższy fragment kodu do obsługi ostatnim przypadku również (a nawet spróbować coś innego).
P.S .: Gwarantuje się, że ciąg ma co najmniej jedną wielką literę i 4 znaki. Jeśli jednak teoretycznie brakuje kapitału, należy wziąć pod uwagę pierwsze 4 znaki. Jeśli nie ma 4 znaków, brakujące znaki mogą być wypełnione pierwszymi alfabetycznymi znakami (abcd
). Ale, jak wspomniano, te przypadki 2 krawędzi zwykle się nie zdarzają.
Niezły, Andrew. Możesz również napisać 'str.gsub (/ [^ A-Z] + ([A-Z]) /, '\ 1') [0,4] .upcase'. –
To jest naprawdę bardzo miłe! Dziękuję Ci! – linkyndy