はじめに
3日目は、(株)スマートテック・ベンチャーズの串田(@eKushida)が担当します。
今回は、Stringのプロパティとメソッドをまとめました。
ラインナップ
下記にSwift2との変更有無も合わせて、リストアップしました。
項番 | 説明 | Swift2.x | Swift3.x |
---|---|---|---|
1 | 空文字チェックする | isEmpty | 変更なし |
2 | 文字数を取得する | characters.count | 変更なし |
3 | 文字列の一部を取得する | substringToIndex substringFromIndex substringWithRange |
変更あり substring |
4 | 文字列を数値に変換する | Int | 変更なし |
5 | 文字列を区切り文字で分割する | componentsSeparatedByString | 変更あり components |
6 | 文字列を置換する | stringByReplacingOccurrencesOfString | 変更あり replacingOccurrences |
7 | 文字列のPrefixを調べる | hasPrefix | 変更なし |
8 | 文字列のSuffixを調べる | hasSuffix | 変更なし |
9 | 文字列に該当の文字列が含まれるか調べる | rangeOfString | 変更あり range |
10 | 文字列の前後の空白を削除する | stringByTrimmingCharactersInSet | 変更あり trimmingCharacters |
11 | 文字列の前後の改行を削除する | stringByTrimmingCharactersInSet | 変更あり trimmingCharacters |
12 | 文字列をURLエンコードする | stringByAddingPercentEncodingWithAllowedCharacters | 変更あり addingPercentEncoding |
13 | 文字列をURLデコードする | stringByRemovingPercentEncoding | 変更あり removingPercentEncoding |
14 | 文字列を大文字に変換する | uppercaseString | 変更あり uppercased |
15 | 文字列を小文字に変換する | lowercaseString | 変更あり lowercased |
サンプル
Swift3.x系の利用シーンをご説明します。
1. 空文字チェックする(isEmpty)
Swift2/3
let str = ""
print(str.isEmpty ? "空です" : str)
// 実行結果
// 空です
2. 文字数を取得する(characters.count)
Swift2/3
let str = "1234567890"
print(str.characters.count)
// 実行結果
// 10
3. 文字列の一部を取得する(substring)
Swift3
let str = "1234567890"
//先頭から5文字
print(str.substring(to: str.index(str.startIndex, offsetBy: 5)))
//末尾から3文字
print(str.substring(from: str.index(str.endIndex, offsetBy: -3)))
//先頭から3文字〜末尾から3文字の範囲
print(str.substring(with: str.index(str.startIndex, offsetBy: 3) ..< str.index(str.endIndex, offsetBy: -3)))
// 実行結果
// 12345
// 890
// 4567
Swift2
let str = "1234567890"
//先頭から5文字
print(str.substringFromIndex(str.startIndex.advancedBy(5)))
//末尾から3文字
print(str.substringFromIndex(str.endIndex.advancedBy(-3)))
//先頭から3文字〜末尾から3文字の範囲
let startIndex = str.startIndex.advancedBy(3)
let endIndex = startIndex.advancedBy(3)
print(str.substringWithRange(Range(start:startIndex , end: endIndex)))
4. 文字列を数値に変換する(Int)
Swift2/3
let testData = ["1","2","♥","4","あ"]
_ = testData.map {
print(Int($0) ?? "数値以外")
}
// 実行結果
// 1
// 2
// 数値以外
// 4
// 数値以外
5. 文字列を区切り文字で分割する(components)
Swift3
let str = "a,b,c,d,e,f,g"
let separatedArray = str.components(separatedBy: ",")
_ = separatedArray.map {
print($0)
}
// 実行結果
// a
// b
// c
// d
// e
// f
// g
Swift2
let str = "a,b,c,d,e,f,g"
let separatedArray = str.componentsSeparatedByString(",")
_ = separatedArray.map {
print($0)
}
6. 文字列を置換する(replacingOccurrences)
Swift3
let str = "S♥T♥V"
print(str.replacingOccurrences(of: "♥", with: ""))
// 実行結果
// STV
swift2
let str = "S♥T♥V"
print(str.stringByReplacingOccurrencesOfString("♥", withString: ""))
7. 文字列のPrefixを調べる(hasPrefix)
Swift2/3
let testData = ["stv001","Stv002","stv003","ssd004","s"]
let stvMembers = testData.filter {
$0.hasPrefix("stv")
}
_ = stvMembers.map {
print($0)
}
// 実行結果
//stv001
//stv003
8. 文字列のSuffixを調べる(hasSuffix)
Swift2/3
let testData = ["stv001","Stv002","stv003","ssd004","s001"]
let firstMembers = testData.filter {
$0.hasSuffix("001")
}
_ = firstMembers.map {
print($0)
}
// 実行結果
//stv001
//s001
9. 文字列に該当の文字列が含まれるか調べる(range)
Swift3
let str = "あああああああああstvいいいいいいいいいいいいい"
if let index = str.range(of: "stv") {
print("見つかりました。 index: \(str.distance(from: str.startIndex, to: index.lowerBound))")
} else {
print("見つかりませんでした")
}
// 実行結果
// 見つかりました。 index: 9
swift2
let str = "あああああああああstvいいいいいいいいいいいいい"
if let range = str.rangeOfString("stv") {
print("見つかりました。 index: \(range.startIndex)")
} else {
print("見つかりませんでした")
}
10. 文字列の前後の空白を削除する(trimmingCharacters)
Swift3
let str = " STV "
print(str.trimmingCharacters(in: .whitespaces).uppercased())
// 実行結果
// STV
swift2
let str = " STV "
print(str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()))
11. 文字列の前後の改行を削除する(trimmingCharacters)
Swift3
let str = "\nSTV\n"
print(str.trimmingCharacters(in: .whitespacesAndNewlines).uppercased())
// 実行結果
// STV
swift2
let str = "\nSTV\n"
print(str.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()))
12. 文字列をURLエンコードする(addingPercentEncoding)
Swift3
let str = "スマートテック・ベンチャーズ"
print(str.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) ?? "エンコードできませんでした")
// 実行結果
// %E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%86%E3%83%83%E3%82%AF%E3%83%BB%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%82%BA
swift2
let str = "スマートテック・ベンチャーズ"
print(str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet()) ?? "エンコードできませんでした")
13. 文字列をURLデコードする(removingPercentEncoding)
Swift3
let str = "%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%86%E3%83%83%E3%82%AF%E3%83%BB%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%82%BA"
print(str.removingPercentEncoding ?? "デコードできませんでした")
// 実行結果
// スマートテック・ベンチャーズ
swift2
let str = "%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%86%E3%83%83%E3%82%AF%E3%83%BB%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%82%BA"
print(str.stringByRemovingPercentEncoding ?? "デコードできませんでした")
14. 文字列を大文字に変換する(uppercased)
Swift3
let str = "stv"
print(str.uppercased())
// 実行結果
// STV
swift2
let str = "stv"
print(str.uppercaseString)
15. 文字列を小文字に変換する(lowercased)
Swift3
let str = "STV"
print(str.lowercased())
// 実行結果
// stv
swift2
let str = "STV"
print(str.lowercaseString)
最後に
他にも利用するものがあれば、随時追加したいと思います。
最後までご覧いただき、ありがとうございました。
スマートテック・ベンチャーズでは、未経験だけどiOSの開発をやりたい!という人を募集しています。
Advent Calendarのスマートテック・ベンチャーズページに会社およびWantedlyのURLをのせていますので、興味のある方は是非ご覧ください。
https://www.wantedly.com/companies/st-ventures/info
明日は、@k_motoさんです。
お楽しみに!