轨道
/
Tcl
Tcl
/
练习
/
微博
微博

微博

简单

说明

你发现社交媒体市场上存在一个空白:非常非常短的帖子。 如今 Twitter 允许发布 280 个字符的帖子,那些想要快速更新社交动态的人依然无法得到满足。 你决定创建自己的社交网络。

为了让产品引人注目,你把它做得很极端:只允许发布 5 个或更少字符的帖子。 超过 5 个字符的帖子一律截断为 5 个字符。

为了让用户充分表达自己,你允许使用表情符号和其他 Unicode 字符。

任务是:把输入的字符串截断为 5 个字符。

文本编码

以数字方式存储的文本必须转换成一连串的字节。 把字符映射为字节的常用方式有 3 种。

  • ASCII可以编码英文字符。 所有字符都恰好占 1 个字节。
  • UTF-8是一种 Unicode 文本编码。 字符占 1 到 4 个字节。
  • UTF-16是一种 Unicode 文本编码。 字符占 2 个或 4 个字节。

UTF-8 和 UTF-16 都是 Unicode 编码,也就是说它们能够表示范围极其广泛的字符,包括:

  • 世界上大多数语言和文字的文本
  • 历史文本
  • 表情符号

UTF-8 和 UTF-16 都是变长编码,也就是说,不同的字符占用的空间大小不同。

看看字母 'a' 和表情符号 '😛'。 在 UTF-16 中,这个字母占 2 个字节,而这个表情符号占 4 个字节。

这道练习的诀窍在于,使用围绕 Unicode 字符(码点)设计的 API,而不是 Unicode 码元。

Tcl 关于 Unicode 的说明

在 8.1 版本中,Tcl 字符串已经能够无缝处理 Unicode 字符。在当时,这相当具有开创性。然而,随着越来越多的 Unicode 字符被创造出来,Tcl 处理它们的能力逐渐落后。

Tcl 的内部实现只能处理 16 位的 Unicode 字符,只覆盖了前 65,526 个字符。这个 Tcl wiki 页面给出了原因,尤其是其中关于“AndroWish”语言的讨论。

Tcl 9.0 是第一个能够处理完整的 Unicode 字符集的版本。因此,只有使用 Tcl 9.0 版本才能(轻松地)解出这个练习。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Tcl Exercism

准备好开始 微博 了吗?

注册 Exercism,借助 135 个练习 和真人导师指导,学习并掌握 Tcl,全部免费。