& nbsp文字がJavaで正しく表示されない
-
08-07-2019 - |
質問
" & nbsp;& nbsp;
"を試しました。標準出力Java文字列に2つのスペースを表示します。 System.out.println(" __");
< ----を試してみてください(2つのスペースですが、明らかに1つのスペースに切り詰められます。したがって、アンダースコアです)
& nbsp;
をエスケープする方法があると思いますが、それを理解することもオンラインでヘルプを見つけることもできません。多くのリテラル& nbsp;& nbsp;
が表示されるため、検索は皮肉です。
どんな助けでも感謝します。
編集:
for (int j = 0; j < COLUMNS; j++)
if (j < 10){
r += "__";
}
10個のスペースが生成されますが、印刷時に予想される20個ではありません
申し訳ありませんが、ここでの書式設定はまだ新しいです
解決
&amp; nbsp;
はHTML固有のエンコードです。
最初は正しかった-2つのスペースに対応するJava文字列は、2つのスペース文字です。例:
String s = " ";
試したprintln()呼び出しは、 動作するはずでした。どうしてそれが1つのスペースに縮小されたと信じるようになったのですか?あなたの問題は他の場所にあると思います...
編集:
コードスニペットに基づく- COLUMNS
5は万が一ですか? :-)
もう一度編集:
OK、COLUMNSが15の場合、このコードは r
に20個のスペースが追加されます。本当に確認したい場合は、デバッガーでステップスルーするか、 r + =
行の上にロギングステートメントを配置して、ステートメントが呼び出された回数を確認します。
また、出力を検査対象の場所に出力する前に、 r
がどのように使用されるかを見てください。 Javaで明示的に、または暗黙的に(たとえば、後で取得して表示する前に10文字が狭すぎるデータベース列に格納されるなど)、ある時点で値が切り捨てられる可能性があります。
他のヒント
何らかの理由で文字列に改行しないスペースが必要な場合は、Unicodeリテラルを使用する必要があります。
System.out.println("banana\u00A0phone");
Javaで&amp; nbspを使用する必要はありません。 System.out.print(&quot;&quot;);
でうまくいくはずです。次のようなものを試してください:
System.out.print("This is the a string before spaces" + " " + "this is a string after spaces");
Altキーを押しながらテンキーで0160と入力することで、改行しないスペースを作成することもできます。