JavaString string
で指定された a は、人間が意味を持つ実際の文字string.codePoints().toArray().length
の長さを反映していますか? String
言い換えれば、エスケープ文字やその他のエンコーディングのアーティファクトを滑らかにしますか?
編集\r\n
「人間」とは、ほとんどのプログラマーが2文字、 1文字などと見なすと想像するように、「プログラマー」を意味ESC
していました。
JavaString string
で指定された a は、人間が意味を持つ実際の文字string.codePoints().toArray().length
の長さを反映していますか? String
言い換えれば、エスケープ文字やその他のエンコーディングのアーティファクトを滑らかにしますか?
編集\r\n
「人間」とは、ほとんどのプログラマーが2文字、 1文字などと見なすと想像するように、「プログラマー」を意味ESC
していました。
いいえ。
例えば:
制御文字 (ESC、CR、NL など) は削除されません。これらは Unicode で個別のコードポイントを持っています。
スペース、タブなどのシーケンスは結合されません
任意のハイフン ( http://www.fileformat.info/info/unicode/char/00AD/index.htm ) 文字は削除されません。
Unicode 結合文字 ( https://en.wikipedia.org/wiki/Combining_character ) は結合されません。
現在、これらのいくつかが「人間が意味のある実際のキャラクター」であるかどうかについては議論の余地がありますが、全体的な答えはまだノーです.
次のように明確にしました。
「人間」とは、ほとんどのプログラマーが \r\n を 2 文字と見なすと想像するように、「プログラマー」を意味していました ...
それよりも複雑です。私はプログラマーであり、\r\n
意味があるかどうかはコンテキストに依存します。README ファイルを読んでいる場合、私の脳は空白の違いを意味上の重要性がないものとして扱います。しかし、パーサーを作成している場合、コードは空白を考慮に入れます...解析する言語によって異なります。
codePoints() メソッドの CharSequence の Javadoc を確認してください。
このシーケンスからコード ポイント値のストリームを返します。シーケンス内で検出されたサロゲート ペアはすべて、Character.toCodePoint によって結合されたかのように結合され、結果がストリームに渡されます。通常の BMP 文字、対になっていないサロゲート、および未定義のコード単位を含むその他のコード単位は、int 値にゼロ拡張され、その後ストリームに渡されます。https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html#codePoints--
そして、コードポイントが何であるかを理解するために、コードポイントに関連する String クラスのもの:
String(int[] codePoints, int offset, int count) Unicode コード ポイント配列引数の部分配列からの文字を含む新しい String を割り当てます。https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
コード ポイントは Unicode コード ポイント ( https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#unicode )を表す int であるため、人間以外の文字も含めてすべての文字が含まれます。 -読み取り可能。