日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#字符串操作方法实例

發布時間:2023/12/18 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#字符串操作方法实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、string關鍵字與StringBuilder類

?

??? C# 字符串是使用 string 關鍵字聲明的一個字符數組。字符串是使用引號聲明的,如下例所示:

?

string s = "Hello, World!";

?

??? 字符串對象是“不可變的”,即它們一旦創建就無法更改。對字符串進行操作的方法實際上返回的是新的字符串對象。因此,出于性能方面的原因,大量的連接或其他涉及字符串的操作應當用 StringBuilder 類執行,如下所示:

?

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append("one ");

sb.Append("two ");

sb.Append("three");

string str = sb.ToString();

?

?

二、字符串使用

?

1、轉移字符“\”

??? 字符串中可以包含轉義符,如“\n”(新行)和“\t”(制表符)

??? 如果希望包含反斜杠,則它前面必須還有另一個反斜杠,如“\\”。

?

?

2、“@”符號

???@ 符號會告知字符串構造函數忽略轉義符和分行符

??? 因此,以下兩個字符串是完全相同的:

??????? string p1 = "\\\\My Documents\\My Files\\";

??????? string p2 = @"http://www.cnblogs.com/xianspace/admin/file://my/ Documents\My Files\";

?

?

3、ToString()

??? 如同所有從 Object 派生的對象一樣,字符串也提供了 ToString 方法,用于將值轉換為字符串。此方法可用于將數值轉換為字符串,如下所示:

int year = 1999;

string msg = "Eve was born in " + year.ToString();

System.Console.WriteLine(msg);? // outputs "Eve was born in 1999"

?

??? 另外,可以通過參數格式化ToString()的顯示輸出。如,對于時間類型格式,可以通過ToString()方法自定義時間顯示格式。如:

System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");

//outputs "2009-03-11 18:05:16.345"

//"MM":指定月份為2位字符串,不足2位則前方補"0";"M":為月份數值轉換的字符串;

//"HH":表示24小時制的小時;"hh"表示12小時制的小時;

?

?

4、SubString()

??? 格式:Substring(int startindex, int len)

???用于獲取源字符串指定起始位置startindex,指定長度len的字符串

??? 參數Startindex索引從0開始,且最大值必須小于源字符串的長度,否則會編譯異常;

參數len的值必須不大于源字符串索引指定位置開始,之后的字符串字符總長度,否則會出現異常;

示例:

??? string s4 = "Visual C# Express";

??? System.Console.WriteLine(s4.Substring(7, 2));???????? // outputs "C#" ,C為第八個字符

??? System.Console.WriteLine(s4.Replace("C#", "Basic"));? // outputs "Visual Basic Express"

?

?

5、Replace()

????格式:Replace(string oldValue, string newValue)

??? 用于字符串中特定字符串組合的替換,即將源字符串中的所有oldValue 字符串替換為 newValue 字符串

示例:

??? string s5 = "Visual C# Express";

??? System.Console.WriteLine(s5.Replace("C#","VB"));???????? // outputs "Visual VB Express"

?

?

6、Split()

???將字符串拆分為子字符串(如將句子拆分為各個單詞)是一個常見的編程任務。Split() 方法使用分隔符(如空格字符)char 數組,并返回一個子字符串數組。您可以使用 foreach 訪問此數組。

示例:

??? char[] delimit = new char[] { ' ' };

??? string s14 = "The cat sat on the mat.";

??? foreach (string substr in s14.Split(delimit))? //使用空格拆分

??? {

?????????? System.Console.WriteLine(substr);

??? }

??? 此代碼將在單獨的行上輸出每個單詞,如下所示:

??? The

??? cat

??? sat

??? on

??? the

??? mat.

?

??? 下面的代碼示例演示如何使用 System.String.Split 方法分析字符串。此方法返回一個字符串數組,其中每個元素是一個單詞。作為輸入,Split 采用一個字符數組指示哪些字符被用作分隔符。本示例中使用了空格、逗號、句點、冒號和制表符。一個含有這些分隔符的數組被傳遞給 Split,并使用結果字符串數組分別顯示句子中的每個單詞。

示例:

?1?class?TestStringSplit
?2?
?3?{
?4?
?5?????static?void?Main()
?6?
?7?????{
?8?
?9?????????char[]?delimiterChars?=?{?'?',?',',?'.',?':',?'\t'?};
10?
11??
12?
13?????????string?text?=?"one\ttwo?three:four,five?six?seven";
14?
15?????????System.Console.WriteLine("Original?text:?'{0}'",?text);
16?
17??
18?
19?????????string[]?words?=?text.Split(delimiterChars);
20?
21?????????System.Console.WriteLine("{0}?words?in?text:",?words.Length);
22?
23??
24?
25?????????foreach?(string?s?in?words)
26?
27?????????{
28?
29?????????????System.Console.WriteLine(s);
30?
31?????????}
32?
33?????}
34?
35?}
36?
37??
38?

?

輸出:

Original text: 'one???? two three:four,five six seven'

7 words in text:

one

two

three

four

five

six

seven

?

??? 另外,還可通過正則表達式Regex.Split()的方法,通過字符串分隔字符串。

示例:

????using System.Text.RegularExpressions; //需要引用正則表達式的命名空間???

??? string str="aaajsbbbjsccc";

??? string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);?? //正則表達式

??? // RegexOptions.IgnoreCase 表示忽略字母大小寫

??? foreach (string i in sArray) Response.Write(i.ToString() + "<br>");

??? 輸出:

??????? aaa

??????? bbb

??????? ccc

?

?

7、Trim()

??? Trim() 從當前 String 對象移除所有前導空白字符和尾部空白字符。

示例:

??? string s7 = "? Visual C# Express???? ";

??? System.Console.WriteLine(s7);???????? // outputs? "? Visual C# Express???? "

??? System.Console.WriteLine(s7.Trim());???????? // outputs "Visual C# Express"

?

?

8、ToCharArray()

????格式:ToCharArray(int startindex,int len)

??? 用于將字符復制到字符數組。用于修改字符串等

示例:

string s8 = "Hello, World";

char[] arr = s8.ToCharArray(0, s8.Length);

foreach (char c in arr)

{

??? System.Console.Write(c);? // outputs "Hello, World"

}

?

示例:修改字符串內容

??? 字符串是不可變的,因此不能修改字符串的內容。但是,可以將字符串的內容提取到非不可變的窗體中,并對其進行修改,以形成新的字符串實例。

??? 下面的示例使用 ToCharArray 方法來將字符串的內容提取到 char 類型的數組中。然后修改此數組中的某些元素。之后,使用 char 數組創建新的字符串實例。

?

class ModifyStrings

{

??? static void Main()

??? {

??????? string str = "The quick brown fox jumped over the fence";

??????? System.Console.WriteLine(str);

?

??????? char[] chars = str.ToCharArray();

??????? int animalIndex = str.IndexOf("fox");

??????? if (animalIndex != -1)

??????? {

??????????? chars[animalIndex++] = 'c';

??????????? chars[animalIndex++] = 'a';

??????????? chars[animalIndex] = 't';

??????? }

?

??????? string str2 = new string(chars);

??????? System.Console.WriteLine(str2);

??? }

}

?

輸出:

The quick brown fox jumped over the fence

The quick brown cat jumped over the fence

?

?

9、利用索引訪問字符串中的各個字符

??? 格式:str[int index]

示例:逆序排列字符串

string s9 = "Printing backwards";

for (int i = 0; i < s9.Length; i++)

{

??? System.Console.Write(s9[s9.Length - i - 1]);? // outputs "sdrawkcab gnitnirP"

}

?

?

10、更改大小寫,ToUpper() 和 ToLower()

??? 若要將字符串中的字母更改為大寫或小寫,可以使用 ToUpper() 或 ToLower()。如下所示:

string s10 = "Battle of Hastings, 1066";

System.Console.WriteLine(s10.ToUpper());? // outputs "BATTLE OF HASTINGS 1066"

System.Console.WriteLine(s10.ToLower());? // outputs "battle of hastings 1066"

?

?

11、比較

??? 比較兩個字符串的最簡單方法是使用 == 和 != 運算符,執行區分大小寫的比較。

string color1 = "red";

string color2 = "green";

string color3 = "red";

if (color1 == color3)

{

??? System.Console.WriteLine("Equal");

}

if (color1 != color2)

{

??? System.Console.WriteLine("Not equal");

}

?

?

12、CompareTo()

??? 字符串對象也有一個 CompareTo() 方法,它根據某個字符串是否小于 (<) 或大于 (>) 另一個,返回一個整數值(小于0或大于等于0)。比較字符串時使用 Unicode 值,小寫的值小于大寫的值。示例:

string s121 = "ABC";

string s122 = "abc";

if (s121.CompareTo(s122) > 0)

{

??? System.Console.WriteLine("Greater-than");

}

else

{

??? System.Console.WriteLine("Less-than");

}

?

?

13、字符串索引?IndexOf()。

??? 若要在一個字符串中搜索另一個字符串,可以使用 IndexOf()。如果未找到搜索字符串,IndexOf() 返回 -1;否則,返回它出現的第一個位置的索引(從零開始)。

示例:

string s13 = "Battle of Hastings, 1066";

System.Console.WriteLine(s13.IndexOf("Hastings"));? // outputs 10 ,注意從0開始數起

System.Console.WriteLine(s13.IndexOf("1967"));????? // outputs -1

?

??? string 類型(它是 System.String 類的別名)為搜索字符串的內容提供了許多有用的方法。下面的示例使用 IndexOf、LastIndexOf、StartsWith 和 EndsWith 方法。

示例:

?

class?StringSearch

{

????
static?void?Main()

????{

????????
string?str?=?"A?silly?sentence?used?for?silly?purposes.";

????????System.Console.WriteLine(
"'{0}'",str);?????????//'A?silly?sentence?used?for?silly?purposes.'

????????
bool?test1?=?str.StartsWith("a?silly");???

????????System.Console.WriteLine(
"starts?with?'a?silly'??{0}",?test1);???//starts?with?'a?silly'??False

?

????????
bool?test2?=?str.StartsWith("a?silly",?System.StringComparison.OrdinalIgnoreCase);

????????System.Console.WriteLine(
"starts?with?'a?silly'??{0}?(ignoring?case)",?test2);????//starts?with?'a?silly'??True?(ignore?case)

?

????????
bool?test3?=?str.EndsWith(".");

????????System.Console.WriteLine(
"ends?with?'.'??{0}",?test3);????????//ends?with?'.'??True

?

????????
int?first?=?str.IndexOf("silly");

????????
int?last?=?str.LastIndexOf("silly");

????????
string?str2?=?str.Substring(first,?last?-?first);

????????System.Console.WriteLine(
"between?two?'silly'?words:?'{0}'",?str2);????//between?two?'silly'?words:?'silly?sentence?used?for?'

????}

}

?

輸出:

'A silly sentence used for silly purposes.'

starts with 'a silly'? False

starts with 'a silly'? True (ignore case)

ends with '.'? True

between two 'silly' words: 'silly sentence used for '

?

?

三、使用 StringBuilder

?

??? StringBuilder 類創建了一個字符串緩沖區,用于在程序執行大量字符串操作時提供更好的性能。StringBuilder 字符串還允許您重新分配個別字符,這些字符是內置字符串數據類型所不支持的。例如,此代碼在不創建新字符串的情況下更改了一個字符串的內容:

示例:

??? System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");

??? sb[0] = 'C';

??? System.Console.WriteLine(sb.ToString());? // displays Cat: the ideal pet

??? System.Console.ReadLine();

?

??? 在以下示例中,StringBuilder 對象用于從一組數值類型中創建字符串。

示例:

class TestStringBuilder

{

??? static void Main()

??? {

??????? System.Text.StringBuilder sb = new System.Text.StringBuilder();

?

??????? // Create a string composed of numbers 0 - 9

??????? for (int i = 0; i < 10; i++)

??????? {

??????????? sb.Append(i.ToString());

??????? }

??????? System.Console.WriteLine(sb);? // displays 0123456789

?

??????? // Copy one character of the string (not possible with a System.String)

??????? sb[0] = sb[9];

?

??????? System.Console.WriteLine(sb);? // displays 9123456789

??? }

}

?

?

四、正則表達式

?

??? 可以使用 System.Text.RegularExpressions.Regex 類搜索字符串。這些搜索可以涵蓋從非常簡單到全面使用正則表達式的復雜范圍。以下是使用 Regex 類搜索字符串的兩個示例。有關更多信息,請參見 .NET Framework 正則表達式。

?

??? 以下代碼是一個控制臺應用程序,用于對數組中的字符串執行簡單的不區分大小寫的搜索。給定要搜索的字符串和包含搜索模式的字符串后,靜態方法 System.Text.RegularExpressions.Regex.IsMatch(System.String,System.String,System.Text.RegularExpressions.RegexOptions) 執行搜索。

??? 在本例中,使用第三個參數指示忽略大小寫。有關更多信息,請參見 System.Text.RegularExpressions.RegexOptions。

?

示例:

class TestRegularExpressions

{

??? static void Main()

??? {

??????? string[] sentences =

??????? {

??????????? "cow over the moon",

??????????? "Betsy the Cow",

??????????? "cowering in the corner",

??????????? "no match here"

??????? };

?

??????? string sPattern = "cow";

?

??????? foreach (string s in sentences)

??????? {

??????????? System.Console.Write("{0,24}", s);

?

??????????? if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))

??????????? {

??????????????? System.Console.WriteLine("? (match for '{0}' found)", sPattern);

??????????? }

??????????? else

??????????? {

??????????????? System.Console.WriteLine();

??????????? }

??????? }

??? }

}

?

輸出:

?????? cow over the moon? (match for 'cow' found)

?????????? Betsy the Cow? (match for 'cow' found)

? cowering in the corner? (match for 'cow' found)

?????????? no match here

?

??? 以下代碼是一個控制臺應用程序,此程序使用正則表達式驗證數組中每個字符串的格式。驗證要求每個字符串具有電話號碼的形式,即用短劃線將數字分成三組,前兩組各包含三個數字,第三組包含四個數字。這是通過正則表達式 ^\\d{3}-\\d{3}-\\d{4}$ 完成的。有關更多信息,請參見正則表達式語言元素。

?

示例:

class TestRegularExpressionValidation

{

??? static void Main()

??? {

??????? string[] numbers =

??????? {

??????????? "123-456-7890",

??????????? "444-234-22450",

??????????? "690-203-6578",

??????????? "146-893-232",

??????????? "146-839-2322",

??????????? "4007-295-1111",

??????????? "407-295-1111",

??????????? "407-2-5555",

??????? };

?

???????string sPattern = "^\\d{3}-\\d{3}-\\d{4}$";?

?

???????foreach (string s in numbers)

??????? {

??????????? System.Console.Write("{0,14}", s);

?

??????????? if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))

??????????? {

??????????????? System.Console.WriteLine(" - valid");

??????????? }

??????????? else

??????????? {

??????????????? System.Console.WriteLine(" - invalid");

??????????? }

??????? }

??? }

}

?

輸出:

??? 123-456-7890 - valid

??? 444-234-22450 - invalid

??? 690-203-6578 - valid

??? 146-893-232 - invalid

??? 146-839-2322 - valid

??? 4007-295-1111 - invalid

??? 407-295-1111 - valid

??? 407-2-5555 - invalid

?

?

五、聯接多個字符串

?

??? 有兩種聯接多個字符串的方法:使用 String 類重載的 + 運算符,以及使用 StringBuilder 類。+ 運算符使用方便,有助于生成直觀的代碼,但必須連續使用;每使用一次該運算符就創建一個新的字符串,因此將多個運算符串聯在一起效率不高。

示例:

string two = "two";

string str = "one " + two + " three";

System.Console.WriteLine(str);

?

??? 盡管在代碼中只出現了四個字符串,三個字符串聯接在一起,最后一個字符串包含全部三個字符串,但總共要創建五個字符串,因為首先要將前兩個字符串聯接,創建一個包含前兩個字符串的字符串。第三個字符串是單獨追加的,形成存儲在 str 中的最終字符串。

??? 也可以使用 StringBuilder 類將每個字符串添加到一個對象中,然后由該對象通過一個步驟創建最終的字符串。下面的示例對此策略進行了演示。

示例:

??? 下面的代碼使用 StringBuilder 類的 Append 方法來聯接三個字符串,從而避免了串聯多個 + 運算符的弊端。

示例:

class StringBuilderTest

{

??? static void Main()

??? {

??????? string two = "two";

?

??????? System.Text.StringBuilder sb = new System.Text.StringBuilder();

??????? sb.Append("one ");

??????? sb.Append(two);

??????? sb.Append(" three");

??????? System.Console.WriteLine(sb.ToString());

?

??????? string str = sb.ToString();

??????? System.Console.WriteLine(str);

??? }

}

轉載于:https://www.cnblogs.com/xianspace/archive/2009/03/17/1414443.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的c#字符串操作方法实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。