LoginSignup
11

More than 5 years have passed since last update.

Swiftはじめたい...その8 文字列操作関数など

Last updated at Posted at 2016-01-14

今回は文字列操作などの関数を試してみます。

まずは文字の切り取りから

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好きとしては文字列操作が面倒だとイライラします。

今日はここまで

  • 次回は関数かな〜

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11