Closed14

ECMAScriptにおける空白文字

okunokentarookunokentaro

The definition of white space is the union of WhiteSpace and LineTerminator. When determining whether a Unicode code point is in Unicode general category “Space_Separator” (“Zs”), code unit sequences are interpreted as UTF-16 encoded code point sequences as specified in 6.1.4.

WhiteSpaceLineTerminatorを確認すればよいみたい。

okunokentarookunokentaro

UTF-16 encoded code point sequences as specified in 6.1.4.

とあるので、Unicode general category “Space_Separator” (“Zs”) に分類される文字もそうらしい。

okunokentarookunokentaro

どうやら/[\s\uFEFF\xA0]/WhiteSpace, LineTerminator, Space_Separator を満たすらしい。

okunokentarookunokentaro

ECMAScriptとJava両方で空白として扱われるものはなにかを調べた。

Category Java ECMAScript
U+0009 Character Tabulation, TAB 水平タブ Cc 1 1
U+000A End of Line, LF 改行 Cc 1 1
U+000B Line Tabulation, VT 垂直タブ Cc 1 1
U+000C Form Feed, FF フォーム・フィード Cc 1 1
U+000D Carriage Return, CR 復帰 Cc 1 1
U+001C File Separator ファイル区切り文字 Cc 1 0
U+001D Group Separator グループ区切り文字 Cc 1 0
U+001E Information Separator Two レコード区切り文字 Cc 1 0
U+001F Information Separator One 単位区切り文字 Cc 1 0
U+0020 Space 半角スペース Zs 1 1
U+00A0 No-Break Space, NBSP Zs 0 1
U+1680 Ogham Space Mark Zs 1 1
U+2000 En Quad Zs 1 1
U+2001 Em Quad Zs 1 1
U+2002 En Space Zs 1 1
U+2003 Em Space Zs 1 1
U+2004 Three-Per-Em Space Zs 1 1
U+2005 Four-Per-Em Space Zs 1 1
U+2006 Six-Per-Em Space Zs 1 1
U+2007 Figure Space Zs 0 1
U+2008 Punctuation Space Zs 1 1
U+2009 Thin Space Zs 1 1
U+200A Hair Space Zs 1 1
U+202F Narrow No-Break Space, NNBSP Zs 0 1
U+205F Medium Mathematical Space, MMSP Zs 1 1
U+3000 Ideographic Space 全角スペース Zs 1 1
U+FEFF Zero Width No-Break Space, BOM Cf 0 1

Javaは(全バージョンの改定を追ったわけではないが)Ccカテゴリの区切り文字を空白として扱い、それはECMAScript上では空白として扱われないのが大きな違い。また、Javaでは改行なしの空白についてはZsカテゴリであったとしても空白として扱わない点も異なる。

okunokentarookunokentaro

ECMAScript処理系でJavaの空白を除去することを満たそうとすると、String.prototype.trim()に加えてCcに分類される4つの区切り文字を除去するようにすればとりあえず安心っぽい。おわり。

このスクラップは2022/10/05にクローズされました