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通常