今回は文字列操作などの関数を試してみます。
まずは文字の切り取りから
substringです
- substringはimport Foundationが必要でした。
substring
let s = "abcdefghijklmn"
// 先頭から5文字目まで
print(s.substringToIndex(s.startIndex.advancedBy(5)))
// 4文字目から最後まで
print(s.substringFromIndex(s.startIndex.advancedBy(5)))
// 3文字目から5文字目まで3文字
print(s.substringWithRange(Range<String.Index>(start: s.startIndex.advancedBy(2), end: s.startIndex.advancedBy(5))));
// 後ろから3文字
print(s.substringFromIndex(s.endIndex.advancedBy(-3)))
結果
abcde
fghijklmn
cde
lmn
- なんじゃこりゃぁ〜〜〜〜〜?!バカにしてんのか??
substring:日本語も試してみます。
substring
import Foundation
let s = "日本語はABCちゃんとつかえるかな"
// 先頭から5文字目まで
print(s.substringToIndex(s.startIndex.advancedBy(5)))
// 4文字目から最後まで
print(s.substringFromIndex(s.startIndex.advancedBy(5)))
// 3文字目から5文字目まで3文字
print(s.substringWithRange(Range<String.Index>(start: s.startIndex.advancedBy(2), end: s.startIndex.advancedBy(5))));
// 後ろから3文字
print(s.substringFromIndex(s.endIndex.advancedBy(-3)))
結果
日本語はA
BCちゃんとつかえるかな
語はA
るかな
- 日本語でも問題なさそうです。でも萎えました...他に方法ないのかな?
substring:こっちのほうがむしろすっきりするかも?
- めんどいうのでもう配列で処理してみます。
array
let s = "日本語はABCちゃんとつかえるかな"
print([Character](s.characters)[2..<5].map{ String($0) }.joinWithSeparator(""))
結果
語はA
- これでも一応答えはでました。
その他の文字関数 大文字小文字など
- 小文字化、大文字化、文字列を含むかどうか?を試してみます。
文字関数いろいろ
let s = "abcXYZ日本語"
// 小文字
print("lowercaseString:",s.lowercaseString)
// 大文字
print("uppercaseString:",s.uppercaseString)
// 文字を含む
print("containsString:",s.containsString("ABC"))
// 合わせ技で文字を含むか?
print("upper->contains:",s.uppercaseString.containsString("ABC"))
// 日本語でで文字を含むか?
print("contains KANJI:",s.containsString("日本語"))
結果
lowercaseString: abcxyz日本語
uppercaseString: ABCXYZ日本語
containsString: false
upper->contains: true
contains KANJI: true
- substringはがっくりでしたが、こっちはふつーです。
- 基本的に日本語化どうかはもう関係ないみたいですね。
乱数
- なんかObjective-cと一緒なんですね...
結果
for i in (0..<10) {
print("[",i,"] = ",arc4random_uniform(UInt32(100)))
}
結果
[ 0 ] = 50
[ 1 ] = 49
[ 2 ] = 35
[ 3 ] = 91
[ 4 ] = 90
[ 5 ] = 47
[ 6 ] = 36
[ 7 ] = 8
[ 8 ] = 90
[ 9 ] = 25
- 当たり前ですが実行するたびに値が変わります。
まとめ
- substringはめんどくさいですねー
- 正規表現まで試そうと思ってたんですがググるとNativeに扱えない感じ?なので放置
- 時間関数はNSDateだってんでそれじゃSwiftじゃなくていいじゃん、なので後回し
- perl好きとしては文字列操作が面倒だとイライラします。
今日はここまで
- 次回は関数かな〜