1

我尝试用“ &nbsp;&nbsp;”在标准输出 Java 字符串中显示两个空格。尝试System.out.println("__"); <---- (两个空格,但很明显,它会将其缩减为一个空格,因此是下划线)

我想有一种方法可以逃脱&nbsp;,但我无法弄清楚,也无法在网上找到帮助。搜索它具有讽刺意味,因为出现了很多文字&nbsp;&nbsp;

任何帮助,将不胜感激。

编辑:

for (int j = 0; j < COLUMNS; j++)
  if (j < 10){
    r += "__";
  }

产生 10 个空格,而不是打印时预期的 20 个空格

对不起,我在这里格式化还是新手

4

4 回答 4

6

&nbsp;是一种特定于 HTML 的编码。

你第一次是对的 - 对应于两个空格的 Java 字符串只是两个空格字符,例如

String s = "  ";

您尝试的 println() 调用应该有效。你做了什么让你相信它被修剪成一个空间?我认为您的问题在其他地方...

编辑:

根据您的代码片段 - 有COLUMNS没有机会是 5?:-)

再次编辑:

好的,如果 COLUMNS 为 15,那么此代码将导致r附加 20 个空格。如果您想真正确定您可以在调试器中单步执行,或者在该r +=行上方放置一条日志记录语句,以确定该语句被调用了多少次。

r在其输出打印到您正在检查的地方之前,还可以查看稍后如何使用;也许它的值在某个时候被截断,无论是在 Java 中显式地还是隐式地(例如存储在一个数据库列中,该列在稍后检索和显示之前太窄了 10 个字符)。

于 2009-10-28T14:33:47.693 回答
6

如果您想在字符串中使用不间断空格,无论出于何种原因,您都必须使用 Unicode 文字:

System.out.println("banana\u00A0phone");
于 2009-10-28T14:37:40.340 回答
2

您不需要在 Java 中使用  。System.out.print(" ");应该做的伎俩。尝试类似:

System.out.print("This is the a string before spaces" + "  " + "this is a string after spaces");
于 2009-10-28T14:36:15.383 回答
0

您还可以通过按住 Alt 键并在数字键盘上键入 0160 来创建不间断空格。

于 2009-10-28T15:03:07.357 回答