string字符串入门


备注

本节概述了字符串是什么,以及开发人员可能想要使用它的原因。

它还应该提到字符串中的任何大型主题,并链接到相关主题。由于字符串的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

备注发布日期
ASCII字符串 7位 1963年6月17日
UTF-8 默认为8位,通过代理可变长度 1992年9月30日
UCS-2 16位,就像没有代理的UTF-16一样,使用了我的Microsoft Windows NT 1993年7月23日
UTF-16 16位默认值,通过代理项可变长度 1996年7月31日

字符串

字符串是一系列字符文字。到目前为止,所有现代编程语言都支持字符串, 1但语言设计者之间没有就如何对字符串进行分类达成共识。就编程语言设计而言,需要考虑两个主要问题。

  1. 字符串应该被视为原始值还是复合值?
  2. 语言本身应该提供什么字符串操作? 2

通过使字符串成为原始值,语言提供的字符串操作都是内置的;并且不能在语言本身中定义。这允许在编译器级别进行某些优化 - 特别是关于内存布局和使用所谓的字符串池重用字符串。权衡在于无法使用drop替换字符串操作,并且必须使用普通函数调用来调用此类函数,而使用内置操作的语法通常明显不同。结果是,如果发现更有效的算法,则不能简单地改变正在使用的字符串库。一个人为的例子是在开发Boyer-Moore字符串搜索算法之前将子字符串搜索作为核心特征集的一部分。

相反,通过将字符串定义为复合值(例如字符数组),所有常用的数组操作都将自动应用于字符串。但是,这会导致语言中的所有字符串都是固定长度的。 3

最终,另一种方法是将字符串表示为字符列表 - 与数组一样 - 允许表示继承所有列表操作。

1保存更多深奥的东西,比如Piet
2语言通常提供字符串比较,主要是相等,将字符串与其他字符串连接,替换单个字符和子字符串以及字符串的词法排序。 3通常