# C# 字符串(String)
在 C# 中,您可以使用字符數組來表示字符串,但是,更常見的做法是使用 **string** 關鍵字來聲明一個字符串變量。string 關鍵字是 **System.String** 類的別名。
## 創建 String 對象
您可以使用以下方法之一來穿件 string 對象:
* 通過給 String 變量指定一個字符串
* 通過使用 String 類構造函數
* 通過使用字符串串聯運算符( + )
* 通過檢索屬性或調用一個返回字符串的方法
* 通過格式化方法來轉換一個值或對象為它的字符串表示形式
下面的實例演示了這點:
```
using System;
namespace StringApplication
{
class Program
{
static void Main(string[] args)
{
//字符串,字符串連接
string fname, lname;
fname = "Rowan";
lname = "Atkinson";
string fullname = fname + lname;
Console.WriteLine("Full Name: {0}", fullname);
//通過使用 string 構造函數
char[] letters = { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);
Console.WriteLine("Greetings: {0}", greetings);
//方法返回字符串
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
Console.WriteLine("Message: {0}", message);
//用于轉化值的格式化方法
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}",
waiting);
Console.WriteLine("Message: {0}", chat);
Console.ReadKey() ;
}
}
}
```
當上面的代碼被編譯和執行時,它會產生下列結果:
```
Full Name: Rowan Atkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012
```
## String 類的屬性
String 類有以下兩個屬性:
| 名稱 | 描述 |
| --- | --- |
| **Chars** | 在當前 _String_ 對象中獲取 _Char_ 對象的指定位置。 |
| **Length** | 在當前的 _String_ 對象中獲取字符數。 |
## String 類的方法
String 類有許多方法用于 string 對象的操作。下面的表格提供了一些最常用的方法:
| 名稱 | 描述 |
| --- | --- |
| **public static int Compare( string strA, string strB )** | 比較兩個指定的 string 對象,并返回一個表示它們在排列順序中相對位置的整數。該方法區分大小寫。 |
| **public static int Compare( string strA, string strB, bool ignoreCase )** | 比較兩個指定的 string 對象,并返回一個表示它們在排列順序中相對位置的整數。但是,如果布爾參數為真時,該方法不區分大小寫。 |
| **public static string Concat( string str0, string str1 )** | 連接兩個 string 對象。 |
| **public static string Concat( string str0, string str1, string str2 )** | 連接三個 string 對象。 |
| **public static string Concat( string str0, string str1, string str2, string str3 )** | 連接四個 string 對象。 |
| **public bool Contains( string value )** | 返回一個表示指定 string 對象是否出現在字符串中的值。 |
| **public static string Copy( string str )** | 創建一個與指定字符串具有相同值的新的 String 對象。 |
| **public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count )** | 從 string 對象的指定位置開始復制指定數量的字符到 Unicode 字符數組中的指定位置。 |
| **public bool EndsWith( string value )** | 判斷 string 對象的結尾是否匹配指定的字符串。 |
| **public bool Equals( string value )** | 判斷當前的 string 對象是否與指定的 string 對象具有相同的值。 |
| **public static bool Equals( string a, string b )** | 判斷兩個指定的 string 對象是否具有相同的值。 |
| **public static string Format( string format, Object arg0 )** | 把指定字符串中一個或多個格式項替換為指定對象的字符串表示形式。 |
| **public int IndexOf( char value )** | 返回指定 Unicode 字符在當前字符串中第一次出現的索引,索引從 0 開始。 |
| **public int IndexOf( string value )** | 返回指定字符串在該實例中第一次出現的索引,索引從 0 開始。 |
| **public int IndexOf( char value, int startIndex )** | 返回指定 Unicode 字符從該字符串中指定字符位置開始搜索第一次出現的索引,索引從 0 開始。 |
| **public int IndexOf( string value, int startIndex )** | 返回指定字符串從該實例中指定字符位置開始搜索第一次出現的索引,索引從 0 開始。 |
| **public int IndexOfAny( char[] anyOf )** | 返回某一個指定的 Unicode 字符數組中任意字符在該實例中第一次出現的索引,索引從 0 開始。 |
| **public int IndexOfAny( char[] anyOf, int startIndex )** | 返回某一個指定的 Unicode 字符數組中任意字符從該實例中指定字符位置開始搜索第一次出現的索引,索引從 0 開始。 |
| **public string Insert( int startIndex, string value )** | 返回一個新的字符串,其中,指定的字符串被插入在當前 string 對象的指定索引位置。 |
| **public static bool IsNullOrEmpty( string value )** | 指示指定的字符串是否為 null 或者是否為一個空的字符串。 |
| **public static string Join( string separator, params string[] value )** | 連接一個字符串數組中的所有元素,使用指定的分隔符分隔每個元素。 |
| **public static string Join( string separator, string[] value, int startIndex, int count )** | 鏈接一個字符串數組中的指定元素,使用指定的分隔符分隔每個元素。 |
| **public int LastIndexOf( char value )** | 返回指定 Unicode 字符在當前 string 對象中最后一次出現的索引位置,索引從 0 開始。 |
| **public int LastIndexOf( string value )** | 返回指定字符串在當前 string 對象中最后一次出現的索引位置,索引從 0 開始。 |
| **public string Remove( int startIndex )** | 移除當前實例中的所有字符,從指定位置開始,一直到最后一個位置為止,并返回字符串。 |
| **public string Remove( int startIndex, int count )** | 從當前字符串的指定位置開始移除指定數量的字符,并返回字符串。 |
| **public string Replace( char oldChar, char newChar )** | 把當前 string 對象中,所有指定的 Unicode 字符替換為另一個指定的 Unicode 字符,并返回新的字符串。 |
| **public string Replace( string oldValue, string newValue )** | 把當前 string 對象中,所有指定的字符串替換為另一個指定的字符串,并返回新的字符串。 |
| **public string[] Split( params char[] separator )** | 返回一個字符串數組,包含當前的 string 對象中的子字符串,子字符串是使用指定的 Unicode 字符數組中的元素進行分隔的。 |
| **public string[] Split( char[] separator, int count )** | 返回一個字符串數組,包含當前的 string 對象中的子字符串,子字符串是使用指定的 Unicode 字符數組中的元素進行分隔的。int 參數指定要返回的子字符串的最大數目。 |
| **public bool StartsWith( string value )** | 判斷字符串實例的開頭是否匹配指定的字符串。 |
| **public char[] ToCharArray()** | 返回一個帶有當前 string 對象中所有字符的 Unicode 字符數組。 |
| **public char[] ToCharArray( int startIndex, int length )** | 返回一個帶有當前 string 對象中所有字符的 Unicode 字符數組,從指定的索引開始,直到指定的長度為止。 |
| **public string ToLower()** | 把字符串轉換為小寫并返回。 |
| **public string ToUpper()** | 把字符串轉換為大寫并返回。 |
| **public string Trim()** | 移除當前 String 對象中的所有前導空白字符和后置空白字符。 |
上面的方法列表并不詳盡,請訪問 MSDN 庫,查看完整的方法列表和 String 類構造函數。
## 實例
下面的實例演示了上面提到的一些方法:
**比較字符串**
```
using System;
namespace StringApplication
{
class StringProg
{
static void Main(string[] args)
{
string str1 = "This is test";
string str2 = "This is text";
if (String.Compare(str1, str2) == 0)
{
Console.WriteLine(str1 + " and " + str2 + " are equal.");
}
else
{
Console.WriteLine(str1 + " and " + str2 + " are not equal.");
}
Console.ReadKey() ;
}
}
}
```
當上面的代碼被編譯和執行時,它會產生下列結果:
```
This is test and This is text are not equal.
```
**字符串包含字符串:**
```
using System;
namespace StringApplication
{
class StringProg
{
static void Main(string[] args)
{
string str = "This is test";
if (str.Contains("test"))
{
Console.WriteLine("The sequence 'test' was found.");
}
Console.ReadKey() ;
}
}
}
```
當上面的代碼被編譯和執行時,它會產生下列結果:
```
The sequence 'test' was found.
```
**獲取子字符串:**
```
using System;
namespace StringApplication
{
class StringProg
{
static void Main(string[] args)
{
string str = "Last night I dreamt of San Pedro";
Console.WriteLine(str);
string substr = str.Substring(23);
Console.WriteLine(substr);
}
Console.ReadKey() ;
}
}
```
當上面的代碼被編譯和執行時,它會產生下列結果:
```
San Pedro
```
**連接字符串:**
```
using System;
namespace StringApplication
{
class StringProg
{
static void Main(string[] args)
{
string[] starray = new string[]{"Down the way nights are dark",
"And the sun shines daily on the mountain top",
"I took a trip on a sailing ship",
"And when I reached Jamaica",
"I made a stop"};
string str = String.Join("\n", starray);
Console.WriteLine(str);
}
Console.ReadKey() ;
}
}
```
當上面的代碼被編譯和執行時,它會產生下列結果:
```
Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop
```
- C# 基礎
- C# 簡介
- C# 環境
- C# 程序結構
- C# 基本語法
- C# 數據類型
- C# 類型轉換
- C# 變量
- C# 常量
- C# 運算符
- C# 判斷
- C# 循環
- C# 封裝
- C# 方法
- C# 可空類型(Nullable)
- C# 數組(Array)
- C# 字符串(String)
- C# 結構(Struct)
- C# 枚舉(Enum)
- C# 類(Class)
- C# 繼承
- C# 多態性
- C# 運算符重載
- C# 接口(Interface)
- C# 命名空間(Namespace)
- C# 預處理器指令
- C# 正則表達式
- C# 異常處理
- C# 文件的輸入與輸出
- C# 高級
- C# 特性(Attribute)
- C# 反射(Reflection)
- C# 屬性(Property)
- C# 索引器(Indexer)
- C# 委托(Delegate)
- C# 事件(Event)
- C# 集合(Collection)
- C# 泛型(Generic)
- C# 匿名方法
- C# 不安全代碼
- C# 多線程
- ASP.NET 簡介
- Web Pages 教程
- ASP.NET Web Pages - 教程
- ASP.NET Web Pages - 添加 Razor 代碼
- ASP.NET Web Pages - 頁面布局
- ASP.NET Web Pages - 文件夾
- ASP.NET Web Pages - 全局頁面
- ASP.NET Web Pages - HTML 表單
- ASP.NET Web Pages - 對象
- ASP.NET Web Pages - 文件
- ASP.NET Web Pages - 幫助器
- ASP.NET Web Pages - WebGrid 幫助器
- ASP.NET Web Pages - Chart 幫助器
- ASP.NET Web Pages - WebMail 幫助器
- ASP.NET Web Pages - PHP
- ASP.NET Web Pages - 發布網站
- Razor 教程
- ASP.NET Razor - 標記
- ASP.NET Razor - C# 和 VB 代碼語法
- ASP.NET Razor - C# 變量
- ASP.NET Razor - C# 循環和數組
- ASP.NET Razor - C# 邏輯條件
- ASP.NET Razor - VB 變量
- ASP.NET Razor - VB 循環和數組
- ASP.NET Razor - VB 邏輯條件
- MVC 教程
- ASP.NET MVC 教程
- ASP.NET MVC - Internet 應用程序
- ASP.NET MVC - 應用程序文件夾
- ASP.NET MVC - 樣式和布局
- ASP.NET MVC - 控制器
- ASP.NET MVC - 視圖
- ASP.NET MVC - SQL 數據庫
- ASP.NET MVC - 模型
- ASP.NET MVC - 安全
- ASP.NET MVC - HTML 幫助器
- ASP.NET MVC - 發布網站
- Web Forms 教程
- ASP.NET Web Forms - 教程
- ASP.NET Web Forms - HTML 頁面
- ASP.NET Web Forms - 服務器控件
- ASP.NET Web Forms - 事件
- ASP.NET Web Forms - HTML 表單
- ASP.NET Web Forms - 維持 ViewState
- ASP.NET Web Forms - TextBox 控件
- ASP.NET Web Forms - Button 控件
- ASP.NET Web Forms - 數據綁定
- ASP.NET Web Forms - ArrayList 對象
- ASP.NET Web Forms - Hashtable 對象
- ASP.NET Web Forms - SortedList 對象
- ASP.NET Web Forms - XML 文件
- ASP.NET Web Forms - Repeater 控件
- ASP.NET Web Forms - DataList 控件
- ASP.NET Web Forms - 數據庫連接
- ASP.NET Web Forms - 母版頁
- ASP.NET Web Forms - 導航
- Web Pages 參考手冊
- ASP.NET Web Pages - 類
- ASP.NET Web Pages - WebSecurity 對象
- ASP.NET Web Pages - Database 對象
- ASP.NET Web Pages - WebMail 對象
- ASP.NET Web Pages - 更多幫助器
- MVC - 參考手冊
- Web Forms 參考手冊
- ASP.NET Web Forms - HTML 服務器控件
- ASP.NET Web Forms - Web 服務器控件
- ASP.NET Web Forms - Validation 服務器控件
- 免責聲明