按一下以給予評分及指教
MSDN
MSDN Library
.NET 開發
.NET Framework
String 類別

  開啟低頻寬檢視
本頁僅適用於
Microsoft Visual Studio 2008/.Net Framework 3.5

其他版本也適用於下列軟體:
.NET Framework 類別庫
String 類別

更新:2007 年 11 月

將文字表示為一系列的 Unicode 字元。

命名空間:  System
組件:  mscorlib (在 mscorlib.dll 中)
Visual Basic (宣告)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class String _
    Implements IComparable, ICloneable, IConvertible, IComparable(Of String),  _
    IEnumerable(Of Char), IEnumerable, IEquatable(Of String)
Visual Basic (使用方式)
Dim instance As String
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class String : IComparable, 
    ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, 
    IEnumerable, IEquatable<string>
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class String sealed : IComparable, 
    ICloneable, IConvertible, IComparable<String^>, IEnumerable<wchar_t>, 
    IEnumerable, IEquatable<String^>
J#
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public final class String implements IComparable, 
    ICloneable, IConvertible, IComparable<String>, IEnumerable<char>, 
    IEnumerable, IEquatable<String>
JScript
public final class String implements IComparable, ICloneable, IConvertible, IComparable<String>, IEnumerable<char>, IEnumerable, IEquatable<String>

字串是指用來表示文字的 Unicode 字元之循序集合。String 物件是指表示字串的 System..::.Char 物件之循序集合。String 物件的值是循序集合的內容,而該值是不變的。

String 物件稱為不變的 (唯讀),因為建立它之後便無法修改它的值。看起來好像會修改 String 物件的方法,其實是傳回包含已修改的新 String 物件。如果有必要修改字串式物件的實際內容,請使用 System.Text..::.StringBuilder 類別。

字串中的每個 Unicode 字元是由 Unicode 數值類值所定義,也稱為 Unicode 字碼指標或 Unicode 字元的序數 (數字) 值。每個字碼指標都是用 UTF-16 編碼方式編碼,而編碼方式的每個項目之數值是由 Char 物件表示。

單一的 Char 物件通常表示單一的字碼指標,也就是說,Char 的數值等於字碼指標。但是,字碼指標可能需要一個以上的編碼項目。例如,一個 Unicode 補充字碼指標 (Surrogate 字組) 是由兩個 Char 物件所編碼。

索引

String 中,索引是 Char 物件的位置,而不是 Unicode 字元。索引是以零起始的、非負值的數字,從字串的第一個位置開始,也就是索引位置零。連續的索引值可能不會對應到連續的 Unicode 字元,因為 Unicode 字元可能會編碼為一個以上的 Char 物件。若要使用每個 Unicode 字元而不是每個 Char 物件,請使用 System.Globalization..::.StringInfo 類別。

序數和區分文化特性的作業之比較

String 類別的成員會在 String 物件上執行序數或語言的作業。序數作業作用在每個 Char 物件的數字值上。而語言作業作用在 String 的值上,並考慮與文化特性相關的大小寫、排序、格式化或剖析規則。語言作業在明確宣告文化特性或隱含目前文化特性的內容中執行。如需目前文化特性的詳細資訊,請參閱 CultureInfo..::.CurrentCulture 主題。

大小寫規則決定如何將 Unicode 字元從大或小寫變更成另一個,例如,從小寫變更為大寫。

格式化規則決定如何將值轉換為它的字串表示,而剖析規則決定如何將字串代表轉換為值。

排序規則決定 Unicode 字元的字母順序,並決定如何比較兩個字串。例如,Compare 方法執行語言比較,而 CompareOrdinal 方法執行序數比較。因此,如果目前的文化特性是美式英文 (U.S. English),Compare 方法會認為 'a' 小於 'A',而 CompareOrdinal 方法會認為 'a' 大於 'A'。

.NET Framework 支援文字、字串和序數規則。文字排序執行區分文化特性的字串比較,而其中某些非英數字元的 Unicode 字元可能有指派的特殊加權。例如,短破折號 ("-") 所指派的加權可能非常小,以致於在排序清單中 "coop" 和 "co-op" 會彼此相鄰顯示。除了沒有特殊狀況,以及所有非英數字元的符號會在所有英數字元的 Unicode 字元之前,字串排序類似於文字排序。

區分文化特性的比較就是任何明確或隱含地使用 CultureInfo 物件的比較,包括 CultureInfo..::.InvariantCulture 屬性所指定的不變文化特性。目前的隱含文化特性是由 Thread..::.CurrentCulture 屬性所指定。

序數排序是以字串中每個 Char 物件的數值為基礎來比較字串。序數比較會自動區分大小寫,因為字元的小寫和大寫各有不同的字碼指標。但是,如果在應用程式中大小寫並不重要的話,您可以指定忽略大小寫的序數比較。這就等於使用不變文化特性來將字串轉換成大寫,然後在結果上執行序數比較。

如需文字、字串和序數排序規則的詳細資訊,請參閱 System.Globalization..::.CompareOptions 主題。

區分文化特性的比較通常適合用來排序,而序數比較則不適合。序數比較通常適合用來判斷兩個字串是否相等 (也就是判斷識別),而區分文化特性的比較則不適合。

比較和搜尋方法的備註會指定方法是不是區分大小寫和 (或) 區分文化特性。根據定義,任何字串 (包括空字串 ("") 在內) 都比 null 參考大,而兩個 null 參考則彼此相等。

正規化

有些 Unicode 字元具有多個對等的二進位表示,這是由許多結合 and/or 的複合字元集所組成。Unicode 標準會定義稱為正規化的處理序,在指定字元的任何對等二進位表示時,這個處理序便會傳回一個二進位表示。可以使用許多演算法來執行正規化,這些演算法稱為正規化表單,必須遵守不同的規則。.NET Framework 目前支援 C、D、KC 及 KD 正規化格式。通常會使用序數比較來評估一對正規化的字串。

安全性考量

如果應用程式做了關於符號識別項 (例如檔名或具名管道) 或保存的資料 (例如 XML 檔案中的文字資料) 的安全性決策,則作業就應該使用序數比較,而非區分文化特性的比較。這是因為區分文化特性的比較可以根據作用的文化特性來產生不同的結果,而序數比較則只能根據所比較字元的二進位值。

功能

String 類別會提供成員來比較 String 物件、傳回 String 物件內的字元或字串的索引、複製 String 物件的值、分割字串或結合字串、修改字串的值、將數字、日期和時間或列舉值格式化成字串,以及將字串正規化。

字串和內嵌的 Null

在 .NET Framework 中,String 物件可以包含內嵌的 null,這些 null 字元會視為字串長度的一部分進行計算。不過,在某些語言例如 C 和 C++,null 字元表示字串結尾,不會被視為字串的一部分,也不會視為字串長度的一部分進行計算。這表示,C 和 C++ 程式設計人員或者以 C 或 C++ 撰寫的程式庫對字串的下列通用假設,在套用至 String 物件時,不一定是有效的:

  • strlenwcslen 函式所傳回的值不一定等於 String..::.Length

  • strcpy_swcscpy_s 函式所建立的字串不一定與 String..::.Copy 方法所建立的字串相同。

您應確定具現化 String 物件的原生 C 和 C++ 程式碼 (以及透過平台叫用傳給它 String 物件的程式碼) 請勿假設內嵌的 null 標記字串結尾。

已實作的介面

String 類別會實作 IComparableICloneableIConvertibleIEnumerableIComparable<(Of <(T>)>) 介面。使用 Convert 類別來進行轉換,以替代這個型別的明顯介面成員的 IConvertible 實作。

System..::.Object
  System..::.String

此型別具備執行緒安全。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

.NET Framework

支援版本:3.5、3.0、2.0、1.1、1.0

.NET Compact Framework

支援版本:3.5、2.0、1.0

XNA Framework

支援版本:2.0、1.0
社群內容   什麼是社群內容?
新增內容 RSS  註解
Processing
© 2009 Microsoft Corporation. 著作權所有,並保留一切權利。 使用規定  |  商標  |  隱私權聲明
Page view tracker