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 編譯...