Swiftで標準入力
Swiftでちょっと試したいことがあるけど、iOSプロジェクトを立ち上げるまでもない。でも値の入力をプログラムの実行中に行いたい。そんな時に、コンソール画面から直接入力できるようにします。
開発環境
完成予定図
入力した文字列をそのまま表示します。
Swiftで標準入力
C言語の scanf のように、コンソール画面から値を入力することができるようになります。
1.新規プロジェクトを作成
新規プロジェクトを作成します。テンプレートは OSX / Application / Command Line Tool を選択しました。言語は Swift を選択します。
2.コンソールで入力する
入力には NSFileHandle クラスの fileHandleWithStandardInput メソッドを使います。
print("Input: ", terminator: "")
let input = NSFileHandle.fileHandleWithStandardInput()
let str = String(data: input.availableData, encoding: NSUTF8StringEncoding)
print(str)
let input = NSFileHandle.fileHandleWithStandardInput()
let str = String(data: input.availableData, encoding: NSUTF8StringEncoding)
print(str)
現時点を Command + R で実行してみます。
入力されているのが確認できました!しかし、問題が2点あります。
- Optional型になっている
- 文字列の最後に改行(\n)が入っている
3.問題解決
文字列の最後に入ってしまう改行を削除するには String クラスの stringByTrimmingCharactersInSet メソッドを使います。以下のコードを追加します。
let strInput = str!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
NSCharacterSet.whitespaceAndNewlineCharacterSet() は .whitespaceAndNewlineCharacterSet() に省略可能です。strInput を表示させるようにすると以下のようになります。
これで完成です!