2015-11-19 23 views
5

Bu, ilk bakışta no-brainer gibi görünebilir. Muhtemelen, ama birkaç şey bana bir şeyleri kaçırıyor olabileceğimi hissettiriyor. İlk the Java documentation for Character.isWhitespace onu hariç tutar. Boşluk olarak neyin neye izin verilmediğine ve neyin tanımlanmayacağına ilişkin tanım çok belirgindir ('eğer ve eğer sadece') ve ilk satır değil kırılmayan bir boşluktur.Java, Character.isWhitespace amaçları için bir 'normal' alanı boşluk olarak kabul ediyor mu?

Her zaman bir 'boşluk' - bir boşluk çubuğuna bastığınızda elde ettiğiniz şeyi - non-breaking space olarak kabul ettim.

Peki bu listede nereye sığar? Liste, this question'a en yüksek puanlı cevapta kesin olarak kabul edilir - sadece yanlış okuyor muyum? Ayrıca, this question numaralı yanıtın ilk yorumcusunun şüpheleri var (farklı bir bağlamda). Yine de, test etmek için basit bir kod oluşturduğumda, normal bir alanın beklendiği gibi bir boşluğun örneği olduğunu belirtir. Yani

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!"); 
     } 
    } 
} 

, ben listede başka bir yerde olduğunu, yanlış listedeki ilk öğeyi okuyorum veya liste kendisi basitçe yanlış?

+1

Sanırım _does_ belgenin içerildiğini belirtir, çünkü 'SPACE_SEPARATOR' hata olur 'U + 0020' –

+1

Microsoft Word'de sözcük aralarında bir kesintinin oluşmasını engellemek için Microsoft Word'de ayrılmasız alanlar kullandım Gerçekten birlikte tutulması istedim. Ctrl + Shift + Boşluk Çubuğu kullanılarak girildiler. Genellikle boşluk çubuğuna basılarak üretilen karakterle karıştırılmamalıdırlar. –

+0

@a_horse_with_no_name Neredeyse orada! Diğer cevapta, "U + 0020" SPACE_SEPARATOR tarafından kapsanan Unicode kategorisinde yer alıyor. – Reg

cevap

12

Yanlışsınız; Kırılmayan bir alan, hat kesintisini önler. Bu özel bir alan türü ve hat kesintisine izin veren "normal" değil. Bir "normal" boşluk, kırılmayan bir boşluksa, her seferinde el ile geri dönme tuşuna basmadıkça, ekranın kenarına ulaştığınızda çizgiler hiçbir zaman sarılmayacaktır.

ilk satırı diyor ki:

Bu Unicode boşluk karakteri (SPACE_SEPARATOR, LINE_SEPARATOR veya PARAGRAPH_SEPARATOR) 'dir aynı zamanda bölünemez boşluk ('\ u00A0', '\ u2007' değil, '\ u202F')

SPACE_SEPARATOR kapsadığı unicode boşluk listesi burada bulunabilir:

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

SPACE_SEPARATOR belgeleri, belirli bir karakter değil, bir Unicode karakter kategorisine başvurduğunu söylüyor. Başlığın “normal” alanı (genellikle boşluk çubuğu tarafından üretilen) bu kategoriye dahil edilir.