ぜのぜ

しりとりしようぜのぜのぜのぜ

18日目 ご飯を炊きながら書いている

日記

今日はなんか疲れてやる気がでないので惰性で書いた.おわり

今日書いたコード

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.countNSString.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