C# 字符串(String)
在 C# 中,您可以使用字符數(shù)組來表示字符串,但是,更常見的做法是使用 string關(guān)鍵字來聲明一個(gè)字符串變量。string 關(guān)鍵字是System.String類的別名。
創(chuàng)建 String 對(duì)象
您可以使用以下方法之一來創(chuàng)建 string 對(duì)象:
通過給 String 變量指定一個(gè)字符串
通過使用 String 類構(gòu)造函數(shù)
通過使用字符串串聯(lián)運(yùn)算符( + )
通過檢索屬性或調(diào)用一個(gè)返回字符串的方法
通過格式化方法來轉(zhuǎn)換一個(gè)值或?qū)ο鬄樗淖址硎拘问?/p>
下面的實(shí)例演示了這點(diǎn):
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 構(gòu)造函數(shù)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);//用于轉(zhuǎn)化值的格式化方法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() ;}}}
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 17:58 on Wednesday, 10 October 2012
String 類的屬性
String 類有以下兩個(gè)屬性:
序號(hào) | 屬性名稱 & 描述 |
---|
1 | Chars 在當(dāng)前 String對(duì)象中獲取 Char對(duì)象的指定位置。 |
2 | Length 在當(dāng)前的 String對(duì)象中獲取字符數(shù)。 |
String 類的方法
String 類有許多方法用于 string 對(duì)象的操作。下面的表格提供了一些最常用的方法:
序號(hào) | 方法名稱 & 描述 |
---|
1 | public static int Compare( string strA, string strB ) 比較兩個(gè)指定的 string 對(duì)象,并返回一個(gè)表示它們?cè)谂帕许樞蛑邢鄬?duì)位置的整數(shù)。該方法區(qū)分大小寫。 |
2 | public static int Compare( string strA, string strB, bool ignoreCase ) 比較兩個(gè)指定的 string 對(duì)象,并返回一個(gè)表示它們?cè)谂帕许樞蛑邢鄬?duì)位置的整數(shù)。但是,如果布爾參數(shù)為真時(shí),該方法不區(qū)分大小寫。 |
3 | public static string Concat( string str0, string str1 ) 連接兩個(gè) string 對(duì)象。 |
4 | public static string Concat( string str0, string str1, string str2 ) 連接三個(gè) string 對(duì)象。 |
5 | public static string Concat( string str0, string str1, string str2, string str3 ) 連接四個(gè) string 對(duì)象。 |
6 | public bool Contains( string value ) 返回一個(gè)表示指定 string 對(duì)象是否出現(xiàn)在字符串中的值。 |
7 | public static string Copy( string str ) 創(chuàng)建一個(gè)與指定字符串具有相同值的新的 String 對(duì)象。 |
8 | public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count ) 從 string 對(duì)象的指定位置開始復(fù)制指定數(shù)量的字符到 Unicode 字符數(shù)組中的指定位置。 |
9 | public bool EndsWith( string value ) 判斷 string 對(duì)象的結(jié)尾是否匹配指定的字符串。 |
10 | public bool Equals( string value ) 判斷當(dāng)前的 string 對(duì)象是否與指定的 string 對(duì)象具有相同的值。 |
11 | public static bool Equals( string a, string b ) 判斷兩個(gè)指定的 string 對(duì)象是否具有相同的值。 |
12 | public static string Format( string format, Object arg0 ) 把指定字符串中一個(gè)或多個(gè)格式項(xiàng)替換為指定對(duì)象的字符串表示形式。 |
13 | public int IndexOf( char value ) 返回指定 Unicode 字符在當(dāng)前字符串中第一次出現(xiàn)的索引,索引從 0 開始。 |
14 | public int IndexOf( string value ) 返回指定字符串在該實(shí)例中第一次出現(xiàn)的索引,索引從 0 開始。 |
15 | public int IndexOf( char value, int startIndex ) 返回指定 Unicode 字符從該字符串中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從 0 開始。 |
16 | public int IndexOf( string value, int startIndex ) 返回指定字符串從該實(shí)例中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從 0 開始。 |
17 | public int IndexOfAny( char[] anyOf ) 返回某一個(gè)指定的 Unicode 字符數(shù)組中任意字符在該實(shí)例中第一次出現(xiàn)的索引,索引從 0 開始。 |
18 | public int IndexOfAny( char[] anyOf, int startIndex ) 返回某一個(gè)指定的 Unicode 字符數(shù)組中任意字符從該實(shí)例中指定字符位置開始搜索第一次出現(xiàn)的索引,索引從 0 開始。 |
19 | public string Insert( int startIndex, string value ) 返回一個(gè)新的字符串,其中,指定的字符串被插入在當(dāng)前 string 對(duì)象的指定索引位置。 |
20 | public static bool IsNullOrEmpty( string value ) 指示指定的字符串是否為 null 或者是否為一個(gè)空的字符串。 |
21 | public static string Join( string separator, params string[] value ) 連接一個(gè)字符串?dāng)?shù)組中的所有元素,使用指定的分隔符分隔每個(gè)元素。 |
22 | public static string Join( string separator, string[] value, int startIndex, int count ) 連接接一個(gè)字符串?dāng)?shù)組中的指定位置開始的指定元素,使用指定的分隔符分隔每個(gè)元素。 |
23 | public int LastIndexOf( char value ) 返回指定 Unicode 字符在當(dāng)前 string 對(duì)象中最后一次出現(xiàn)的索引位置,索引從 0 開始。 |
24 | public int LastIndexOf( string value ) 返回指定字符串在當(dāng)前 string 對(duì)象中最后一次出現(xiàn)的索引位置,索引從 0 開始。 |
25 | public string Remove( int startIndex ) 移除當(dāng)前實(shí)例中的所有字符,從指定位置開始,一直到最后一個(gè)位置為止,并返回字符串。 |
26 | public string Remove( int startIndex, int count ) 從當(dāng)前字符串的指定位置開始移除指定數(shù)量的字符,并返回字符串。 |
27 | public string Replace( char oldChar, char newChar ) 把當(dāng)前 string 對(duì)象中,所有指定的 Unicode 字符替換為另一個(gè)指定的 Unicode 字符,并返回新的字符串。 |
28 | public string Replace( string oldValue, string newValue ) 把當(dāng)前 string 對(duì)象中,所有指定的字符串替換為另一個(gè)指定的字符串,并返回新的字符串。 |
29 | public string[] Split( params char[] separator ) 返回一個(gè)字符串?dāng)?shù)組,包含當(dāng)前的 string 對(duì)象中的子字符串,子字符串是使用指定的 Unicode 字符數(shù)組中的元素進(jìn)行分隔的。 |
30 | public string[] Split( char[] separator, int count ) 返回一個(gè)字符串?dāng)?shù)組,包含當(dāng)前的 string 對(duì)象中的子字符串,子字符串是使用指定的 Unicode 字符數(shù)組中的元素進(jìn)行分隔的。int 參數(shù)指定要返回的子字符串的最大數(shù)目。 |
31 | public bool StartsWith( string value ) 判斷字符串實(shí)例的開頭是否匹配指定的字符串。 |
32 | public char[] ToCharArray() 返回一個(gè)帶有當(dāng)前 string 對(duì)象中所有字符的 Unicode 字符數(shù)組。 |
33 | public char[] ToCharArray( int startIndex, int length ) 返回一個(gè)帶有當(dāng)前 string 對(duì)象中所有字符的 Unicode 字符數(shù)組,從指定的索引開始,直到指定的長(zhǎng)度為止。 |
34 | public string ToLower() 把字符串轉(zhuǎn)換為小寫并返回。 |
35 | public string ToUpper() 把字符串轉(zhuǎn)換為大寫并返回。 |
36 | public string Trim() 移除當(dāng)前 String 對(duì)象中的所有前導(dǎo)空白字符和后置空白字符。 |
上面的方法列表并不詳盡,請(qǐng)?jiān)L問 MSDN 庫,查看完整的方法列表和 String 類構(gòu)造函數(shù)。
實(shí)例
下面的實(shí)例演示了上面提到的一些方法:
比較字符串
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() ; }
}}
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
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() ; }
}}
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
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() ;
}
}
}
運(yùn)行實(shí)例 ?
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
Last night I dreamt of San Pedro
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() ; }
}}
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
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