Structure

String.UTF8View

A view of a string’s contents as a collection of UTF-8 code units. ある文字列の内容のひとつの見方、いくらかのUTF-8コード単位のコレクションとして。

Declaration 宣言

@frozen struct UTF8View

Overview 概要

You can access a string’s view of UTF-8 code units by using its utf8 property. A string’s UTF-8 view encodes the string’s Unicode scalar values as 8-bit integers. あなたは、文字列のもつUTF-8コード単位ビューにそれのutf8プロパティを使うことによってアクセスできます。文字列の持つUTF-8ビューは、文字列の持つユニコードスカラー値を8ビット整数として符号化します。


let flowers = "Flowers 💐"
for v in flowers.utf8 {
    print(v)
}
// 70
// 108
// 111
// 119
// 101
// 114
// 115
// 32
// 240
// 159
// 146
// 144

A string’s Unicode scalar values can be up to 21 bits in length. To represent those scalar values using 8-bit integers, more than one UTF-8 code unit is often required. 文字列の持つユニコードスカラー値は、長さが21ビットに至るまで可能です。これらのスカラー値を8ビット整数で表すには、1つ以上のUTF-8コード単位がしばしば必要とされます。


let flowermoji = "💐"
for v in flowermoji.unicodeScalars {
    print(v, v.value)
}
// 💐 128144


for v in flowermoji.utf8 {
    print(v)
}
// 240
// 159
// 146
// 144

In the encoded representation of a Unicode scalar value, each UTF-8 code unit after the first is called a continuation byte. あるユニコードスカラー値の符号化された表現において、最初のものの後の各UTF-8コード単位は、継続バイトと呼ばれます。

UTF8View Elements Match Encoded C Strings UTF8View要素は符号化C文字列と一致します

Swift streamlines interoperation with C string APIs by letting you pass a String instance to a function as an Int8 or UInt8 pointer. When you call a C function using a String, Swift automatically creates a buffer of UTF-8 code units and passes a pointer to that buffer. The code units of that buffer match the code units in the string’s utf8 view. Swiftは、あなたにStringインスタンスを関数へInt8またはUInt8ポインタとして渡させることによって、C文字列APIとの相互作用を能率化します。あなたがC関数をStringを使って呼び出すとき、Swiftは自動的にUTF-8コード単位のバッファを作成してポインタをそのバッファへ渡します。このバッファのコード単位は、文字列のもつutf8ビューでのコード単位と一致します。

The following example uses the C strncmp function to compare the beginning of two Swift strings. The strncmp function takes two const char* pointers and an integer specifying the number of characters to compare. Because the strings are identical up to the 14th character, comparing only those characters results in a return value of 0. 以下の例は、C strncmp関数を使って2つのSwift文字列を比較します。strncmp関数は、2つのconst char*ポインタと、比較する文字数を指定している整数を取ります。これら文字列が14番目の文字に至るまで全く同じなので、それらの文字だけ比較することは0の値を返す結果になります。


let s1 = "They call me 'Bell'"
let s2 = "They call me 'Stacey'"


print(strncmp(s1, s2, 14))
// Prints "0"
print(String(s1.utf8.prefix(14))!)
// Prints "They call me '"

Extending the compared character count to 15 includes the differing characters, so a nonzero result is returned. 比較する文字を15を数えるまで広げることは異なる文字を含みます、それで非ゼロの結果が返されます。


print(strncmp(s1, s2, 15))
// Prints "-17"
print(String(s1.utf8.prefix(15))!)
// Prints "They call me 'B"

Topics 話題

Type Aliases 型エイリアス

Instance Properties 様々なインスタンスプロパティ

Instance Methods インスタンスメソッド

Subscripts 添え字

Relationships 関係

From Protocol 由来プロトコル

See Also 参照

Related String Types 関連した文字列型