๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

study iOS๐ŸŽ/์ฃผ์ ‘ Swift - swift ํ…Œ๋งˆ

[Too Swift] ์‹œ์ฆŒ1 2ํ™” How Swift deals with Strings ์Šค์œ„ํ”„ํŠธ๊ฐ€ ์ŠคํŠธ๋ง์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•

1. A String as a collection of a Grapheme cluster or clusters : ์Šค์œ„ํ”„ํŠธ์—๊ฒŒ ์ŠคํŠธ๋ง์€ ๊ทธ๋ž˜ํ•Œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปฌ๋ ‰์…˜์ด๋‹ค. 

 

unicode์˜ ์บ๋ฆญํ„ฐ ์…‹์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ์Šค์œ„ํ”„ํŠธ์˜ ์ŠคํŠธ๋ง์€, codePoints๋“ค์ด ๋“ค์–ด์™”์„ ๋•Œ, ๊ทธ๊ฒƒ์ด ํ•˜๋‚˜์˜ ์กฐํ•ฉ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉด, ๊ทธ๊ฒƒ์„ Grapheme cluster๋ผ๊ณ  ๋ณด๊ณ , ๊ทธ๊ฒƒ์„ ํ•˜๋‚˜์˜ "char"๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค.

 

let cafeNormal = "café"
let cafeCombined = "cafe\u{0301}" 

// \u0000001100000001 => hexacoded unicode code point

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์ฒซ ๋ฒˆ์งธ ์ƒ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ์ƒ์ˆ˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ƒ ์ฝ”๋“œ ํฌ์ธํŠธ ๊ฐฏ์ˆ˜๋Š” 4๊ฐœ์™€ 5๊ฐœ๋กœ ์ƒ์ดํ•˜๋‚˜, ์Šค์œ„ํ”„ํŠธ๋Š” ์˜์–ด ์•ŒํŒŒ๋ฒณ e์™€ ๋ฐœ์Œ๊ธฐํ˜ธ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์บ๋ฆญํ„ฐ๋กœ ๋ด…๋‹ˆ๋‹ค. 

// ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—
cafeNormal.unicodeScalars.count // 4
cafeCombining.unicodeScalars.count // 5