所有的空白角色?它是语言独立的吗?

sak*_*oon 12 language-agnostic whitespace

我想知道所有的语言是否都像白色空间字符一样处理相同的字符集,还是有任何变化.

任何人都可以提供分隔可以从键盘输入的空白​​字符的完整列表吗?如果它不同,差异和原因会更合适.如果您没有带出任何语言Whitespace或其变体(如果有的话),任何语言都会有所帮助.我当然不想要一个完整的语言列表,如Whitespace:)

Ray*_*oal 23

特定字符是否被分类为空白字符应取决于所使用的字符集.也就是说,编程语言可以自己定义构成空白的内容并非不可能.

大多数现代语言使用Unicode字符集,它确实有一个定义的空间分隔符.Zs类别中的任何字符都是空格分隔符.

您可以在此处查看完整列表.此外,您可以;Zs;在官方Unicode字符数据库中查看这些字符.请注意,此类别中的字符数可能会随着新的Unicode版本的出现而增长,因此我不会说有多少这样的字符存在,甚至也不会尝试列出它们.

Zs Unicode 类别外,Unicode还定义了字符属性.Unicode定义的属性包括Whitespace属性.从Unicode 7.0开始,具有此属性的字符包括具有类别Zs的所有字符加上一些控制字符(包括U + 0009,U + 000A,U + 000B,U + 000C,U + 000D和U + 0085).您可以在Unicode.org中找到具有空白属性的所有字符.

现在许多语言,甚至是现代语言,都有正则表达式的特殊符号,例如\s或者[:space:]要注意,这些只引用ASCII集中的某些字符; 通常这些仅限于

  • SPACE(代码点32,U + 0020)
  • TAB(代码点9,U + 0009)
  • LINE FEED(代码点10,U + 000A)
  • LINE TABULATION(代码点11,U + 000B)
  • FORM FEED(代码点12,U + 000C)
  • CARRIAGE RETURN(代码点13,U + 000D)

现在这个列表很有意思,因为它不仅包含空格分隔符(Zs),还包含"控制,其他"类别(Cc).这就是编程语言在使用术语"空白"时的一般含义.

因此,回答空白字符"完整列表"的最佳方法可能就是说"这取决于你的意思." 如果你的意思是"经典的空白",它可能是上面列出的六个字符.如果你想要更"现代"的东西,那么这六个与Unicode类别Zs中的所有字符的结合.然后,您可能还需要查看其他块(例如,Jerry Coffin对您的问题的评论中提到的U + 1361).它还取决于您打算如何处理这些空格字符.

现在最后一件事:Unicode还没有世界上的每一个角色; 它不断增长.有一天可能会添加新的空格字符.目前,类别Zs +经典是你最好的选择.


Sha*_*vac 9

Ray的回答提供了很好的信息,但不幸的是它缺少3个空白字符.:(

更新:雷已经更新了他已经很好的答案,现在甚至更多thoro和完成.我不知道它是如此复杂.:)对于一个'简单'的答案,我提供以下内容.但是理解他非常好地解释的额外复杂性是非常有用的.

目前有25个Unicode空白字符,带有以下十六进制"代码点":

9, A, B, C, D, 20, 85, A0,
1680, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009, 200A, 2028, 2029, 202F, 205F,
3000
Run Code Online (Sandbox Code Playgroud)

相应的十进制值是:

9, 10, 11, 12, 13, 32, 133, 160,
5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198,
8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287,
12288
Run Code Online (Sandbox Code Playgroud)

我的参考是官方的Unicode网站本身,我在那里搜索"空白".所以,正如表达式一样,我从"马的嘴里"得到它.如果您访问http://unicode.org/charts/uca/,您将获得带有左侧导航框架的2个框架,您可以在其中单击"帮助"链接下的第3个链接,即"空白"链接.不幸的是,显示的框架并不是我称之为"用户友好"的框架.但是,显示的帧给出了每个Unicode空白字符的所有十六进制值的原始列表.我认为该页面是人们可以获得的最"官方"答案.

  • 我交叉引用了十进制值与 wiki 中的字符相同。另请查看相关的 Unicode 字符“6158、8203、8204、8205、8288、65279”。 (2认同)