このページについて
このページは、paiza ラーニング内に開設されているコンテンツ「レベルアップ問題集」で取り扱われているプログラミング課題について、独自の見解を述べたものです。
見解については、paizaラーニングの規約に基づき、許可されている範囲でのみ公開していますが、その内容については paiza とは一切関係なく、また paiza の立場を反映したものではありませんのでご注意ください。
挑戦する課題
レベルアップ問題集の文字列処理メニューから「大文字小文字の反転 (paizaランク D 相当)」を取り上げます。
以下は、問題公開 Web ページからの引用です。
問題
大文字と小文字のアルファベットが混ざった文字列 S が与えられます。
S の小文字を全て大文字に、大文字を全て小文字にした文字列を出力してください。
入力される値
1 |
S |
- 文字列 S が 1 行で与えられます。
期待する出力
S の小文字を全て大文字に、大文字を全て小文字にした文字列を 1 行で出力してください。考え方
入力された文字列の文字一つひとつに対し、大文字か否かを判別し、大文字だったら小文字、小文字だったら大文字に変換する。
Swift の場合、 Character 型に isUppercase というプロパティがあり、その値をチェックすることにより、該当する文字が大文字か否かを判別することが可能である。
入力された文字列を for-in 文で回す場合、取り出された文字列は String.Element 型であるため、一度 String 型に変換した上 Character 型に変換した後、 isUppercase を使うことになる。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 |
let s = readLine()! // String.Element 型として1文字ずつ調べる for ss in s { // ss は String.Element 型なので、一度 String 型にしてから Character 型にする if Character(String(ss)).isUppercase { print(ss.lowercased(), terminator: "") } else { print(ss.uppercased(), terminator: "") } } print() |
1 |
print(readLine()!.map { Character(String($0)).isUppercase ? $0.lowercased() : $0.uppercased() }.joined()) |