2015-11-19 83 views
5

乍一看,這看起來似乎是一件容易的事。這可能是,但有幾件事讓我覺得我可能會錯過一些東西。第一個the Java documentation for Character.isWhitespace似乎排除它。什麼是和什麼是不允許的空格的定義似乎非常確定('當且僅當'),並且第一行說而不是非空格。Java是否將用於Character.isWhitespace的「正常」空間視爲空白?

我一直認爲一個普通的'空間' - 當你按空格鍵時你會得到的東西 - 作爲non-breaking space

那麼它在哪裏適合列表?在this question的最高評分答案中,該列表被認爲是最終的 - 我是否只是讀錯了? 另外,this question中的第一個迴應的迴應似乎有他的懷疑(在不同的情況下)。然而,當我構建一個簡單的代碼來測試時,它表明正常的空間是一個空白的實例,正如人們所期望的那樣。

import static java.lang.Character.isWhitespace; 

public class WhitespaceCheck { 

    public static void main(String[] args) { 

     Character test = ' '; 

     if (Character.isWhitespace(test)) { 
      System.out.println("Is whitespace!");       
     } else { 
      System.out.println("Is not whitespace!"); 
     } 
    } 
} 

所以,我在讀的第一項就行了錯,是別的地方就行了,或者是列表本身根本就是錯誤的?

+1

我認爲文檔_does_表明它包含了,因爲'SPACE_SEPARATOR'是'U + 0020'如果我沒有弄錯 –

+1

我已經在Microsoft Word中使用了非斷點空格來防止在單詞之間出現換行符我真的想保持在一起。他們使用Ctrl + Shift +空格鍵輸入。他們不應該與通常單獨按空格鍵產生的字符混淆。 –

+0

@a_horse_with_no_name差不多有!正如另一個答案所說,「U + 0020」被包含在SPACE_SEPARATOR覆蓋的Unicode類別中。 – Reg

回答

12

你錯了;一個不間斷的空間可以防止換行。這是一種特殊的空間類型,而不是一個「正常」的空間,它確實允許換行。如果一個「正常」空間是一個不間斷的空間,那麼當你到達屏幕邊緣時,線條將永遠不會纏繞,除非每次手動按下返回。

的第一行說:

它是Unicode空格字符(SPACE_SEPARATOR,LINE_SEPARATOR,或PARAGRAPH_SEPARATOR),但不也是一個非中斷空格( '\ u00A0', '\ u2007', '\ u202F')

通過SPACE_SEPARATOR覆蓋了Unicode空白的名單可以在這裏找到:

https://en.wikipedia.org/wiki/Whitespace_character

SPACE_SEPARATOR的文檔說它指的是一個Unicode字符的類別,而不是一個特定的字符。標題的「正常」空間(通常由空格創建)包含在此類別中。