jsbook icon indicating copy to clipboard operation
jsbook copied to clipboard

第42页 第3章 添加对各种空白的解释

Open RubyLouvre opened this issue 12 years ago • 2 comments

但这还没有完。如果你经常翻看jQuery的实现,你就会发现jQuery1.4之后的trim实现,多出了一个对xA0的特别处理。这是Prototype.js的核心成员kangax 的发现,IE或早期的标准浏览器在字符串的处理上都有BUG,把许多本属于空白的字符没有列为\s。根据屈屈的博文 ,浏览器会把WhiteSpace 和 LineTerminator都列入空白字符。 ecma262 v5 文档规定的 WhiteSpace总共有这么多东西: Unicode 编码 说明 U+0020 SPACE,<SP> U+00A0 NO-BREAK SPACE,<NBSP> U+1680 OGHAM SPACE MARK,欧甘空格 U+180E Mongolian Vowel Separator,蒙古文元音分隔符 U+2000 EN QUAD U+2001 EM QUAD U+2002 EN SPACE,En 空格。与 en 同宽(em 的一半) U+2003 EM SPACE,Em 空格。与 em 同宽 U+2004 THREE-PER-EM SPACE,Em 三分之一空格 U+2005 FOUR-PER-EM SPACE,Em 四分之一空格 U+2006 SIX-PER-EM SPACE,Em 六分之一空格 U+2007 FIGURE SPACE,数字空格。与单一数字同宽 U+2008 PUNCTUATION SPACE,标点空格。与同字体窄标点同宽 U+2009 THIN SPACE,窄空格。em 六分之一或五分之一宽 U+200A HAIR SPACE,更窄空格。比窄空格更窄 U+200B Zero Width Space,<ZWSP>,零宽空格 U+200C Zero Width Non Joiner,<ZWNJ>,零宽不连字空格 U+200D Zero Width Joiner,<ZWJ>,零宽连字空格 U+202F NARROW NO-BREAK SPACE,窄式不换行空格 U+205F MEDIUM MATHEMATICAL SPACE,中数学空格。 用于数学方程式 U+2060 Word Joiner,同 U+200B,但该处不换行。 Unicode3.2 新增,代替 U+FEFF U+3000 IDEOGRAPHIC SPACE,表意文字空格。即全角空格 U+FEFF Byte Order Mark,<BOM>,字节次序标记字符。 不换行功能于 Unicode3.2 起废止

LineTerminator 的家族如下: Unicode 编码 说明 U+000D <CR>回车符 U+000A <LF>换行符 U+1680 <LS>行分隔符 U+180E <PS>段落分隔符

RubyLouvre avatar Apr 17 '14 11:04 RubyLouvre

Unicode 编码说明
U+0020 " ", "\x20", "\u0020".半角空格符,键盘空格键
U+0009 "\t", "\x09", "\u0009", 制表符,键盘 tab 键
U+000B "\v", "\x0B", "\u000B", 垂直制表符, 可以用于判定老版本IE, !+"\v1"
U+000C "\f", "\x0C", "\u000C",换页符
U+000D "\r", "\x0D", "\u000D",回车符
U+000A "\n", "\x0A", "\u000A",换行符
U+0020 SPACE,<SP>
U+00A0 "\xA0", "\u00A0", 也就是著名的&nbsp;No-Break Space
禁止自动换行空格符
U+1680 OGHAM SPACE MARK,欧甘空格
U+180E Mongolian Vowel Separator,蒙古文元音分隔符
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE,En 空格。与 en 同宽(em 的一半)
U+2003 EM SPACE,Em 空格。与 em 同宽
U+2004 THREE-PER-EM SPACE,Em 三分之一空格
U+2005 FOUR-PER-EM SPACE,Em 四分之一空格
U+2006 SIX-PER-EM SPACE,Em 六分之一空格
U+2007 FIGURE SPACE,数字空格。与单一数字同宽
U+2008 PUNCTUATION SPACE,标点空格。与同字体窄标点同宽
U+2009 THIN SPACE,窄空格。em 六分之一或五分之一宽
U+200A HAIR SPACE,更窄空格。比窄空格更窄
U+200B Zero Width Space,<ZWSP>,零宽空格
U+200C Zero Width Non Joiner,<ZWNJ>,零宽不连字空格
U+200D Zero Width Joiner,<ZWJ>,零宽连字空格
U+202F NARROW NO-BREAK SPACE,窄式不换行空格
U+2028 <LS> 行分隔符
U+2029 <PS> 段落分隔符
U+205F MEDIUM MATHEMATICAL SPACE,中数学空格。
用于数学方程式
U+2060 Word Joiner,同 U+200B,但该处不换行。
Unicode3.2 新增,代替 U+FEFF
U+3000 IDEOGRAPHIC SPACE,表意文字空格。即全角空格
U+FEFF Byte Order Mark,<BOM>,字节次序标记字符。
不换行功能于 Unicode3.2 起废止

RubyLouvre avatar Dec 11 '15 06:12 RubyLouvre

果然还是有六分之一空格的iOS有此bug!https://github.com/fredshare/blog/issues/21

angrilove avatar Apr 19 '16 01:04 angrilove