1

JavaString stringで指定された a は、人間が意味を持つ実際の文字string.codePoints().toArray().lengthの長さを反映していますか? String言い換えれば、エスケープ文字やその他のエンコーディングのアーティファクトを滑らかにしますか?

編集\r\n「人間」とは、ほとんどのプログラマーが2文字、 1文字などと見なすと想像するように、「プログラマー」を意味ESCしていました。

4

3 に答える 3

9

いいえ。

例えば:


現在、これらのいくつかが「人間が意味のある実際のキャラクター」であるかどうかについては議論の余地がありますが、全体的な答えはまだノーです.


次のように明確にしました。

「人間」とは、ほとんどのプログラマーが \r\n を 2 文字と見なすと想像するように、「プログラマー」を意味していました ...

それよりも複雑です。私はプログラマーであり、\r\n意味があるかどうかはコンテキストに依存します。README ファイルを読んでいる場合、私の脳は空白の違いを意味上の重要性がないものとして扱います。しかし、パーサーを作成している場合、コードは空白を考慮に入れます...解析する言語によって異なります。

于 2016-08-24T12:38:01.950 に答える
1

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 であるため、人間以外の文字も含めてすべての文字が含まれます。 -読み取り可能。

于 2016-08-24T12:46:22.613 に答える