language-agnostic - 所有空白字符?语言独立吗?

标签 language-agnostic whitespace

我想知道所有语言是否都将空白字符视为一组相同的字符,或者是否有任何变化。

谁能提供完整的空格字符列表,以分隔可从键盘输入的空格?如果不同,则差异和原因会更合适。如果您不带Whitespace或其变体(如果有的话),那么任何语言都是有帮助的。我当然不想要像Whitespace这样的语言的完整列表:)

最佳答案

特定字符是否归类为空白字符应取决于所使用的字符集。也就是说,编程语言可以对构成空白的内容进行自己的定义。

大多数现代语言都使用Unicode字符集,该字符集确实定义了空格分隔符。 Zs类别中的任何字符都是空格分隔符。

You can see the complete list here。另外,您可以在官方Unicode Character Database中为;Zs;进行grep查看这些字符。请注意,随着新的Unicode版本的出现,此类别中的字符数可能会增加,因此我不会说存在多少此类字符,甚至也不会尝试列出它们。

除了Zs Unicode类别外,Unicode还定义了character properties。 Unicode定义的属性中有一个空白属性。从Unicode 7.0开始,具有此属性的字符包括类别为Zs的所有字符以及一些控制字符(包括U + 0009,U + 000A,U + 000B,U + 000C,U + 000D和U + 0085)。您可以使用空格属性at Unicode.org here找到所有字符。

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


空格(代码点32,U + 0020)
TAB(代码点9,U + 0009)
LINE FEED(代码点10,U + 000A)
线路标签(代码点11,U + 000B)
FORM FEED(代码点12,U + 000C)
回车(代码点13,U + 000D)


现在,此列表很有趣,因为它不仅包含空格分隔符(Zs),而且还包含“其他控件”类别(Cc)中的空格。这就是编程语言使用术语“空白”时通常的含义。

因此,回答“空白字符的完整列表”问题的最好方法是说“这取决于您的意思”。如果您的意思是“经典空白”,则可能是上面列出的六个字符。如果您想要更“现代”的东西,那就是这六个与Unicode类别Zs中所有字符的并集。再说一遍,您可能也需要查看其他块(例如,杰里·科芬(Jerry Coffin)对您的问题的评论中提到的U + 1361)。它还取决于您打算如何使用这些空格字符。

现在,最后一件事:Unicode尚未在世界上包含所有字符;因此,Unicode不再适用。它一直在增长。有一天可能会添加新的空格字符。目前,类别Zs +经典是您最好的选择。

关于language-agnostic - 所有空白字符?语言独立吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169006/

相关文章:

language-agnostic - HTTP:生成 ETag header

haskell - 在编程语言和范例的上下文中, "Pure"是什么意思?

c++ - 如何忽略 C++ 文件中的空格

php - 选择下拉列表中的空格,从 mysql 中提取

data-structures - 我可以在 1GB 内存中创建多少个整数?

language-agnostic - 在基于0的索引系统中,人们将索引0处的元素称为 "first"还是 "zeroth"元素?

algorithm - 这个序列生成问题的名称是什么?任何意见?

html - 在 CSS 中使用 repeat-x 值完成每个重复背景图像后,如何摆脱白色垂直笔画?

html - 空白 : pre-line for small cell

regex - 如何删除字符串中的空格或制作接受所有类型有效电子邮件的正则表达式