6

Markdownの構文のように、コマンドラインプログラムの「ヘッダーテキスト」を出力するメソッドがあります。

1. =======================
2. This is a header string
3. =======================

cこのメソッドは、 1行目と3行目でcharを受け取り、nの長さに基づいてそれを何度も繰り返しsます。

String.length()英語のアルファベットでは問題なく動作しますが、「Å」や「Ç」などの外国のマルチバイト文字を含む文字列の長さ(つまり、視覚的な長さ)をどのように見つけることができますか?

4

2 に答える 2

10

String.lengthJava文字列はUTF-16で機能するため、これらの種類の文字には問題ありません。UTF-16は、一般的に使用される文字の大部分(ラテン語、ギリシャ語、アラビア語、ヘブライ語、中国語、タイ語、デーバナーガリー語など)を表すのに十分です。 。

U + FFFFを超える文字を処理する必要がある場合は、サロゲートペアを処理するcodePointCount代わりにを使用する必要があります。length

于 2012-10-03T15:56:51.867 に答える
3

String.length()およびを含むほとんどのUnicode文字には問題ありません。ÅÇ

Java文字列は、それぞれがまたはバイトを占めるutf-16場所でエンコードされ ます。Character24

補助文字4は、バイトをとる文字を示し、2つの文字をペアにすることによって実装されます。この場合、codePointCountの代わりに操作を使用する必要がありますlength

ただし、文字は標準のUnicode仕様に確実に存在します。

于 2012-10-03T15:55:35.957 に答える