C 程式語言基礎13

2021-10-09 18:16:15 字數 3871 閱讀 6483

string類用來比較兩個字串、查詢和抽取串中的字元或子串。

string可以看做是char的唯讀陣列。

c#中字串有乙個重要的特性:不可變性,字串一旦宣告就不再可以改變。

注意:對該類物件的任何操作都將返回乙個新的字串物件 除了clone clone直接將該字串的引用返回了 示例:

string s1 = 「a」;

string s2 = s1 + 「b」;

console.writeline(object.referenceequals (s1,s2)); 誰說字串不可變?string s = 「abc」;s=」123「;,s這不是變了嗎

要區分變數名和變數指向的值的區別。程式中可以有很多字串,然後由字串變數指向他們,變數可以指向其他的字串,但是字串本身沒有變化。字串不可變性指的是記憶體中的字串不可變,而不是變數不變。

string s10 = s;//s10指向s指向的字串,而不是s10指向s,哪怕s以後指向了其他記憶體,那麼s10還是指向從前s指向的字元。

string s = 「abc」;

string s = new string(「fgh」.tochararray());

string copys = string.copy(s);

string news = s.clone() as string;

字串是乙個字元陣列

所以可以用遍歷陣列的方式遍歷字串的每乙個位子的字元

示例:

string s1 =

"123456"

;for

(int i=

0;i)

注意:

字串中的字元位置和陣列一樣從下標0開始

字串和陣列一樣有length屬性

字串和陣列一樣可以按索引的方式訪問

static

void

task()

static

void

task()

//自己實現的方法:

static

string

mysubstring

(string str,

int startindex,

int len)

return retstr;

}

static

void

task()

static

void

task()

static

void

task()

//自己實現

static

intmyindexof

(string str1,

string str2)

for(

int i =

0; i < str1.length-str2.length+

1; i++)}

return-1

;}

static

void

task()

string retstr = encoding.ascii.

getstring

(bytearr)

; console.

writeline

(retstr)

;}

static

void

task()

,年齡:"

,name,age)

;}

static

void

task

(string str1,

string str2)

static

string

mytrim

(string str)

自己實現的邏輯
static

string

mytrim

(string str)

}for

(int i =

0; i < str.length; i++)}

return str.

substring

(firstch,lastch-firstch+1)

;}

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace stringbuilderdemo

******",12

,13,45

);//在下標為0的位置插入字串"yy"

sb.insert(0

,"yy");

//從索引為0的位置移除2個長度的字串

sb.remove(0

,2);

//將字串"1991"替換成字串"1998"

sb.replace

("1991"

,"1998");

console.

writeline

(sb)

;//從下標為4的位置開始找到長度為4的字串中將字串"19"替換成"2000"

sb.replace

("19"

,"2000",4

,4);

console.

writeline

(sb)

;//sb的容量

console.

writeline

(sb.capacity);}

}}

using system;

using system.collections.generic;

using system.collections;

using system.diagnostics;

using system.linq;

using system.text;

using system.threading.tasks;

namespace

string和stringbuilder的效能比較

sw.stop()

; console.

writeline

("總時間是:"

,sw.elapsed);}

}}

using system;

using system.collections.generic;

using system.collections;

using system.diagnostics;

using system.linq;

using system.text;

using system.threading.tasks;

namespace

string和stringbuilder的效能比較

sw.stop()

; console.

writeline

("總時間是:"

,sw.elapsed);}

}}

總結

結果上面的圖分析,我們在進行少量字串的拼接的時候使用string來說比較優,但是我們在進行次數為萬級的操作的時候我們可以所選用stringbuilder相對來說更優

C語言基礎13

複習 預處理指令 c 不能直接被編譯器編譯,需要一段程式把它翻譯一下,負責翻譯的程式叫作預處理器,翻譯的過程叫預處理,被翻譯的語句叫預處理指令,以 開頭都是預處理指令。gcc e code.c 檢視預處理結果 gcc e code.c o code.i 把預處理的結果儲存在檔案中。1 檔案包含 in...

C語言基礎 13 函式

在使用函式前必須定義或者宣告函式。double circle double r int main double circle double r 在呼叫函式的時候,函式大多數都有引數,主調函式和被呼叫函式之間需要傳遞資料。在定義函式時函式名後面括弧中的變數名稱為 形式引數 簡稱形參。在呼叫函式時,函式...

C語言程式設計基礎

目錄 第一章 c語言程式設計基礎 c語言國際標準定義 c語言標準庫 c程式的建立過程 最新版本有iso iec9899 2011文件定義,一般稱為c11 標準庫在一系列標準檔案 標頭檔案中指定,標頭檔案的副檔名總是.h,為了使一組標準功能可用於c程式檔案,只需要將對應的標準標頭檔案包含進來。3 編譯...