はじめに
今回はSwiftの文字列の基本的な内容について説明していきます!文字列は非常に重要でiPhoneアプリ開発では必ず文字列は使わます。
文字列はいろいろと覚えることが多いですが、基本的な部分だけをおさえてわからない部分が出てきたら、その都度調べ直すといいでしょう。
文字列の基本
早速、XcodeのPlaygroundで文字列をいろいろ試してみましょう!Playgroundの作成方法は以下の記事を参考にしてください。
初期設定と初めてのSwiftプログラミング – Swiftプログラミング入門2
文字列型の変数の宣言
文字列の変数宣言は以下のように宣言します。
//通常の文字列の宣言 var str1:String = "おはようございます" //型を省略 var str2 = "こんにちは" //文字列の初期値を省略 var str3:String str3 = "こんばんは"
空の文字列の作成
以下の文字列の変数宣言で空の文字列を作成することができます。
//空の文字列の宣言 var str1:String = ""
文字列の連結
文字列の連結は「+」演算子、または「+=」演算子を利用します。
var str1:String = "おはよう" var str2:String = "ございます" //文字列の連結 var str3:String = str1 + str2 var str4:String = "" str4 += str1 str4 += str2
Playgroundで確認すると以下のようになりますね〜
特殊文字
文字列に改行、ダブルクォーテーションなどを挿入したい場合は以下の特殊文字を使用します。
特殊文字 | 内容 |
---|---|
\0 | ヌル(nil) |
\ | バックスラッシュ |
\t | タブ |
\n | 改行 |
\r | キャリッジリターン |
\" | ダブルクォーテーション |
\' | シングルクォーテーション |
\xnn | ユニコード(1バイト) |
\unnnn | ユニコード(2バイト) |
\Unnnnnnnn | ユニコード(4バイト) |
var str1:String = " \"おはようございます。\" " // "おはようございます" var str2:String = " \'こんにちは\' " // 'こんにちは'
文字列に変数の値を挿入する
バックスラッシュ\と()で変数を囲むと変数の値を文字列に含めることができます。
var num1:Int = 100 var str1:String = "テストの点数は\(num1)点です。" //テストの点数は100点です。
文字列を比較する
文字列が同じかどうかは「==」演算子で比較することができます。
var str1:String = "おはよう" if str1 == "おはよう" { print("おはようと一致しました") } else { print("おはようと一致しませんでした") }
Playgroundで実行すると以下のようになります。
文字列の型変換
文字列を数値に変換する
「description」メソッドを利用すると文字列から数値に変換できます。
var num1 = -3.14 var str1:String = num1.description // "-3.14" //整数値だとこの方法でも変換できるが小数やマイナス値の場合はエラーになる var str2:String = String(num1)
数値を文字列に変換する
整数から文字列に変換する場合は、「toInt」メソッドを使用します。
var str1:String = "777" var num1:Int = str1.toInt()!
浮動小数から文字列に変換する場合はちょっとややこしいですがNSString型に変換して「doubleValue」メソッドまたは「floatValue」メソッドを使用します。
var str1:String = "3.14" var doblenum:Double = NSString(string: str).doubleValue var floatnum:Float = NSString(string: str).floatValue
文字列操作
同じ文字を繰り返して変数に格納する
同じ文字を繰り返して変数に格納するには以下の通りに記述します。引数countに繰り返す回数、repeatedValueに繰り返したい文字列を設定します。
// ●●●●●●●●●● var str1:String = String(count:10, repeatedValue:Character("●"))
文字列の文字数を調べる
文字列の文字数は「countElements」関数で調べることができます。
var str1:String = "t-higashiさん" var num1:Int = countElements(str1) // 11
文字列の大文字、小文字に変換する
大文字に変換するにはStringの「uppercaseString」メソッド、小文字に変換するには「lowercaseString」メソッドを使用します。
var str1:String = "t-Higashi" var upperstr:String = str1.uppercaseString //T-HIGASHI var lowercasestr:String = str1.lowercaseString //t-higashi
特定の文字が含まれているか調べる
文字列に特定の文字が含まれているか検索するには「find」関数を使用します。
var str1:String = "おはようございます" var num1:Int = find(str1, "ございます") // 5
文字列の一部分を取り出す
文字列の一部分を取り出すには、NSString型に変換して抜き出します。文字列の先頭から指定した文字数を抜き出す場合は「substringToIndex」メソッドを使用します。
var str1:String = "おはようございます。" var str2 = NSString(string: str1).substringToIndex(4) // おはよう
文字列の取得するスタート地点を指定して、それ以降の文字を全て取得する場合は「substringFromIndex」メソッドを使用します。
var str1:String = "おはようございます。" var str2 = NSString(string: str1).substringFromIndex(5) // ございます。
文字列の取得範囲を指定する場合は「substringWithRange」メソッドを使用します。
var str1:String = "おはようございます。" // 6文字目から4文字分を抜き出す。この場合は"ざいます"が抜き出される。 var str2 = NSString(string: str1).substringWithRange(NSRange(location: 5, length: 4))
文字列の一部分を置換する
文字列の一部分を置換するには「stringByReplecingOccurrencesOfString」メソッドを使用します。
var str1:String = "おはようございます。" // おはよう。こんばんは。 var str2:String = str1.stringByReplecingOccurrencesOfString("ございます。", withString "。こんばんは。", options: nil, range: nil)
文字の挿入、削除を行う
文字列の後ろに追加する場合は「appendString」メソッドを使用します。
var str1:String = "あいうえお" str1.appendString("かきくけこ") // あいうえおかきくけこ
文字列の途中に挿入する場合は「insertString」メソッドを使用します。
var str1:String = "あいうえお" str1.insertString("かきくけこ", atIndex: 3) //あいうかきくけこえお
文字列の一部分を削除するには「deleteCharactersInRange」メソッドを使用します。
var str1:String = "あいうえおかきくけこ" str1.deleteCharactersInRange(NSMakeRange(6, 5)) //あいうえお
文字列の分割
CSVファイルなど「,」で区切られている文字列などは「componentsSeparatedByString」メソッドで分割して配列に格納することができます。
var str1:String = "t-higashi,180,78" var arr1 = str1.componentsSeparatedByString(",") // [t-higashi, 180, 78]
まとめ
文字列の扱いでSwiftは以前iPhoneアプリ開発で使われていたObjective-Cよりは使いやすくなりましたが、NSStringに変換したいといけない場合があるなど他のプログラミング言語と比べてまだ使いにくいところがありますね~^^;
でも上記の文字列に関することは重要なのでしっかりマスタしましょう!
参考サイト
参考文献
詳細!Swift 2 iPhoneアプリ開発入門ノート [ 大重美幸 ] |
詳解Swift [ 荻原剛志 ] |