倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Java と XML と空白と (1) : Java と XML の空白文字

Java での空白文字


Java で空白とみなされる文字は?と聞かれると、意外とよく分からない。 Character クラスの static メソッドに isSpaceChar()isWhitespace() とが定義されているけど、JavaDoc を読んでも全然分からない。

ということで、実際に Character#isSpaceChar(), Character#isWhitespace() を実行してみました。 引数として渡したのは 0 〜 0xffff (65535) です。 下表は

  • SC : isSpaceChar() の返り値が true なら「○」
  • WS : isWhitespace() の返り値が true なら「○」

としてます。

Unicode 文字 SC WS Unicode 文字 SC WS Unicode 文字 SC WS
\u0009 '\t' \u00a0 \u2007
\u000a '\n' \u1680 \u2008
\u000b \u180e \u2009
\u000c '\f' \u2000 \u200a
\u000d '\r' \u2001 \u200b
\u001c \u2002 \u2028
\u001d \u2003 \u2029
\u001e \u2004 \u202f
\u001f \u2005 \u205f
\u0020 ' ' \u2006 \u3000 ' '


\u3000 は「全角スペース」です。

XML での空白文字


XML での空白文字は次の4つです(「Extensible Markup Language (XML) 1.0 (Fifth Edition)」参照):

Unicode 文字 (XML) 名前 文字リテラル (Java) Unicode 文字 (Java)
#x20 スペース (Space) ' ' \u0020
#x9 水平タブ (HT) '\t' \u0009
#xD 復帰キャリッジ・リターン (CR) '\r' \u000d
#xA 改行 (LF) '\n' \u000a


これらは全て、Java でも Whitespace とみなされます*1

*1:一方、空白' ' 以外は SpaceChar とはみなされないようです。