Ho una stringa con custodia di cammello, ad esempio: JustAString
.Far corrispondere le lettere maiuscole e compilare con lettere successive fino a quando la lunghezza della stringa specifica
Vorrei formare stringhe di lunghezza seguendo queste regole:
- afferrare tutte le lettere maiuscole;
- se più di 4 lettere maiuscole, mantenere solo i primi 4;
- se meno di 4 lettere maiuscole, capitalizzare e aggiungere lettere che seguono la lettera maiuscola scorso, finché la lunghezza diventa 4.
Qui ci sono i 3 casi che possono accadere:
ThisIsMyString
produrràTIMS
(maiuscolo);ThisIsOneVeryLongString
produrràTIOV
(prime 4 capitali);MyString
produrràMSTR
(maiuscolo +tr
in maiuscolo).
sono riuscito a risolvere i primi due casi con questo frammento:
str.scan(/[A-Z]/).first(4).join
Tuttavia, io non sono del tutto sicuro come posso meglio modificare il frammento di codice per gestire l'ultimo caso anche (o anche provare qualcosa di diverso).
P.S .: La stringa è garantita con almeno una maiuscola e 4 caratteri. Tuttavia, se teoricamente manca un capitale, i primi 4 caratteri dovrebbero essere presi in considerazione. Se non ci sono 4 caratteri, i caratteri mancanti possono essere compilati con i primi caratteri dell'alfabeto (abcd
). Ma, come accennato, questi due casi limite non si verificano normalmente.
Bello, Andrew. Puoi anche scrivere 'str.gsub (/ [^ A-Z] + ([A-Z]) /, '\ 1') [0,4] .upcase'. –
Questo è davvero molto bello! Grazie! – linkyndy