日記
今日はなんか疲れてやる気がでないので惰性で書いた.おわり
今日書いたコード
import Foundation func pp(_ str: String) { print(str, "count: \(str.count), length: \((str as NSString).length)") } var cafe = "cafe" pp(cafe) cafe.append("\u{301}") pp(cafe) var jp = "\u{1f1ef}" pp(jp) jp.append("\u{1f1f5}") pp(jp) let greeting = "Hello World" // greeting.index(after: greeting.endIndex)
初めて知ったこと
String.count
とNSString.length
の違い.前者はextended grapheme clusterを基準にカウントするのに対し,後者はUTF-16の符号単位を基準にカウントする.そういう仕様のためString.count
を極端に長い文字列に対して使う場合は気をつけてくれみたいな記述があった.そういう場合に後者が早いのかは試してないので誰か試して.
cafe count: 4, length: 4 café count: 4, length: 5 🇯 count: 1, length: 2 🇯🇵 count: 1, length: 4