2009-10-28 83 views
1

我試過「&nbsp;&nbsp;」在標準輸出Java字符串中顯示兩個空格。試圖System.out.println("__"); < ----(兩個空格,但是,很明顯,它修剪下來一個空間,因此下劃線)在Java中無法正確顯示字符

我想象有逃避&nbsp;的方式,但我不能弄清楚,也不在網上找到幫助。搜索它是諷刺的,因爲很多文字&nbsp;&nbsp;顯示。

任何幫助,將不勝感激。

編輯:

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

產生10個空格,而不是像20對不起,我仍然在新的格式在這裏

+0

COLUMNS == 10?否則,這應該工作得很好。 – 2009-10-28 14:48:28

+0

COLUMNS = 15.這就是我沒有得到的。我將不得不進行調試和關注。感謝所有人的幫助。 – Brian 2009-10-28 14:51:52

+0

r不會以任何方式截斷,並且這兩個空格總是作爲一個輸出。由於這不是我的代碼,我覺得在這一點上有義務向它所屬的開發者提出這個問題。感謝大家的幫助,試圖找出答案。 – Brian 2009-10-28 15:20:13

回答

7

&nbsp;是一個特定的HTML編碼預期印刷

時。

你是第一次 - 對應於兩個空格的Java字符串只是兩個空格字符,例如:

String s = " "; 

中的println()調用你的努力應該已經奏效。你做了什麼讓你相信它被縮小到一個空間?我覺得你的問題是在別處......

編輯:基於您的代碼段

- 是COLUMNS 5,通過任何機會呢? :-)

再次編輯:

OK,如果columns是15那麼這段代碼將導致具有24位追加到它r。如果你想確定你可以在調試器中執行,或者在r +=行之上輸入日誌語句以確定該語句被調用的次數。

另外看看r以後如何使用,然後再將其輸出打印到您正在檢查的位置;也許它的值在某些時候會被截斷,無論是顯式地使用Java還是隱式地(例如在被檢索並在稍後顯示之前存儲在10個字符太窄的數據庫列中)。

2

您不需要在Java中使用& nbsp。 System.out.print(" ");應該做的伎倆。嘗試是這樣的:

System.out.print("This is the a string before spaces" + " " + "this is a string after spaces"); 
6

如果你想在你的字符串中的非換空間,不管什麼原因,你必須使用Unicode文字:

System.out.println("banana\u00A0phone"); 
+0

如果您的源代碼字符編碼包含NBSP的代碼點(以及大多數字符編碼),則不必使用unicode文字。您可以直接在字符串文字中直接使用它作爲任何其他字符:「香蕉手機」(不知道這實際上是如何由SO渲染的) – jarnbjo 2009-10-28 14:49:48

+0

因此用常規空間替換它,但正如我所說的,可以使用NBSP在Java代碼中。 – jarnbjo 2009-10-28 14:52:57

+4

你*應該*使用unicode文字,這樣你的意圖關於無形的區分就會變得清晰。 – 2009-10-28 14:57:39

0

您還可以創建一個非中斷按住Alt鍵並在數字鍵盤上輸入0160即可。