Generic Type Method

transcodedLength(of:decodedAs:repairingIllFormedSequences:)

Returns the number of UTF-16 code units required for the given code unit sequence when transcoded to UTF-16, and a Boolean value indicating whether the sequence was found to contain only ASCII characters. UTF-16にコード変換するときに指定されたコードユニットシーケンスに必要とされるUTF-16コードユニットの数を、およびそのシーケンスがASCII文字だけを含むことを発見されたかどうかを指し示すブール値を、返します。

Declaration 宣言

static func transcodedLength<Input, Encoding>(of input: Input, decodedAs sourceEncoding: Encoding.Type, repairingIllFormedSequences: Bool) -> (count: Int, isASCII: Bool)? where Input : IteratorProtocol, Encoding : _UnicodeEncoding, Input.Element == Encoding.CodeUnit

Parameters パラメータ

input

An iterator of code units to be translated, encoded as sourceEncoding. If repairingIllFormedSequences is true, the entire iterator will be exhausted. Otherwise, iteration will stop if an ill-formed sequence is detected. 翻訳されることになるいくらかのコード単位からなるあるイテレータ、sourceEncodingとしてエンコードされます。repairingIllFormedSequencestrueならば、イテレータ全体が使い尽くされることになります。そうでなければ、反復は誤形式シーケンスが検出されるならば停止します。

sourceEncoding

The Unicode encoding of input. inputのユニコードエンコーディング。

repairingIllFormedSequences

Pass true to measure the length of input even when input contains ill-formed sequences. Each ill-formed sequence is replaced with a Unicode replacement character ("\u{FFFD}") and is measured as such. Pass false to immediately stop measuring input when an ill-formed sequence is encountered. trueを渡すと、inputが誤形式シーケンスを含む時であってもinputの長さを測ります。各誤形式シーケンスは、ユニコード代替文字("\u{FFFD}")で置き換えられます、そしてそういったものとして測られます。falseを渡すと、誤形式シーケンスと出くわす場合にinputの計測を直ちに中止します。

Return Value 戻り値

A tuple containing the number of UTF-16 code units required to encode input and a Boolean value that indicates whether the input contained only ASCII characters. If repairingIllFormedSequences is false and an ill-formed sequence is detected, this method returns nil. inputをエンコードするのに必要とされるUTF-16コード単位の数とinputがASCII文字だけを含んでいるかどうかを示すブール値を含んでいるタプル。repairingIllFormedSequencesfalseで誤形式シーケンスが検出されるならば、このメソッドはnilを返します。

Discussion 解説

The following example finds the length of the UTF-16 encoding of the string "Fermata 𝄐", starting with its UTF-8 representation. 以下の例は、文字列"Fermata 𝄐"のUTF-16エンコーディングの長さを、それのUTF-8表現で開始して見つけます。


let fermata = "Fermata 𝄐"
let bytes = fermata.utf8
print(Array(bytes))
// Prints "[70, 101, 114, 109, 97, 116, 97, 32, 240, 157, 132, 144]"


let result = UTF16.transcodedLength(of: bytes.makeIterator(),
                                    decodedAs: UTF8.self,
                                    repairingIllFormedSequences: false)
print(result)
// Prints "Optional((count: 10, isASCII: false))"