字串基礎總結

2022-08-31 02:39:10 字數 4047 閱讀 8641

字串的常用方法

1,字串的語法定義:string strname;strname = value;或者是string name = value ;這兩種定義方式是等價的。字串是引用型別,在定義 string strname的時候在棧空間中,定義了乙個strname的空間,該空間存放乙個記憶體位址;而當進行變數複製操作strname = "the c# programming language"的時候,系統會在堆記憶體分配乙個記憶體空間,該記憶體空間儲存"the c# programming language"值,並且將該記憶體空間的首位址賦值給strname,即棧記憶體空間是儲存對應堆記憶體空間的首位址,而堆記憶體空間則才是正真儲存資料。

2,字串的宣告

字串string對應msil(cts)公共型別系統中的string,實際上是乙個類,那麼以前了解到,類需要使用new《構造方法》()來進行例項化,同樣字串也可以通過此方式進行例項化3乙個變數;例如: string strname = new string(new char);

備註:這裡的string和string等價的效果。

字串的特性:字串是不可變的,在記憶體中字串一旦生成,記憶體的資料將不會改變,即使是使用str1 = str1 + str2操作,也只是在記憶體中重新申請記憶體空間來儲存str1 + str2操作後的結果。那需要修改字串是怎麼處理?這裡介紹乙個方法strname.tochararray(),該方法會將字串程式設計乙個char型別的陣列,因此需要用乙個char型別的陣列接收。

例如:修改字串裡面的內容  char ch = strname.tochararray(); for(int i =0;i< ch.length;i++) strname = new string(ch);//這裡將修改後的字串賦值給strname.

3,字串使用索引訪問

字串原本就是排列在一起的字元組成的,c#提供了用"下標"(索引)來訪問字串中的字元,例如:

string strname ="andywqh";在這裡記憶體中將'a'分配編號為0,'n'分配的編號為1,後面的字元的編號依次遞增。因此,如果需要訪問'w',則必須通過迴圈遍歷該字串的每乙個字元,找到編號為4,所以可以這麼來訪問:char ch = strname[4];即可獲取'w'字元。

備註:字串有乙個length屬性,通過strname.length可以得到該字串的總長度。

4,常見的字串方法:

4.1 字串的大小寫(正對字串裡每乙個字元而言)

所有字元變成大寫:string strname.toupper();

所有字元變成小寫:string strname.tolower();

4.2 移除字串的首尾指定字元

方法原型: string strname.trim();//移除字串strname的首位空格

string strname.trimstrat();//移除字串strname開頭的空格

string strname.trimend();//移除字串strname的結尾處的空格

若果需要指定移除的內容,則可以新增乙個char陣列作為引數 string strname.trim(char ch);

4.3  字串的比較方法

compare()方法原型:int string.compare(string str1,string str2);

按照字典排序進行比較:當 str1 > str2時返回1;

當 str1 = str2時返回0;

當str1 < str2時返回-1;

備註:int string.compare(string str1,string str2,bool ignorecase)表示是否區分大小寫,ignorecase為true表示不區分大小寫,預設值為false;

equals()方法原型 bool strname.equals(string str);比較結果若是相等則返回true,否則返回false。

備註: bool strname.equals(string str,string.comparison。orderinaignorecase)表示不區分大小寫,若只是僅僅比較兩個字串是否相等,則使用"=="運算比較簡單。

4.4 字串的合併和分隔

合併join方法:將陣列strarray中的內容拼接成乙個字串,並在對應的陣列每兩項之間增加分隔符str; strname.join(str,strarray)。

方法原型:string strname.join(string str,string strarray);

字串分隔split方法

方法原型:string strname.split(params char separator);將字串strname以separator中的字元進行分隔,分隔後返回得到的內容儲存到陣列中;返回的陣列中可以有空字串項,如果想要去掉這些空字串項,則可以使用string strname.split(char separator,stringsplitoptions.removeemptyentries).

4.5 字串的查詢

contains()方法

方法原型:bool strname.comtains(string str);表示字串strname中是否包含str,如果包含則返回true,否則返回false.

indexof()方法

常用的兩種方式:a) int strname.indexof(string str)從頭開始查詢到第一次出現str的下標。b) int strname.indexof(string str,int startindex)從startindex開始,出現第一次的下標。如果沒有找到則直接返回-1. lastindexof()睡覺哦從最後乙個字元開始進行匹配。

indexopany()方法

方法原型: int strname.indexofany(char anyof)尋找字串中的所有內容,返回第乙個字元的位置。同樣有乙個過載方法 int strname.indexofany(char anyof,int startindex);

4.6 求子字串方法

string strname.substring(int stratindex,int length)從字串strname的startindex位置開始提取長度為length的字串,如果省略第二個引數則表示一直到最後的字元。

4.7 字串的插入,移除和替換操作

4.7.1 插入操作

在字串strname的index位置上插入str,原來的字元依次往後移動,變成乙個新的字串 strname = strname.insert(index,str);

方法原型: string strname.insert(int index,string str);

4.7.2  移除操作

在字串strname中移除從startindex開始,長度為length的字串,剩下的字串按原有順序合併為乙個新的字串。  strname= strname.remove(startindex,length);

方法原型: string strname.remove(stratindex,int length) ;如果省略第二個引數,將移除startindex後所有的字串。

4.7.3  替換操作

將字串strname 中的oldchar替換為newchar strname = strname.replace(oldchar,newchar);

方法原型:string strname.replace(string oldvalue,string newvalue);

4.8 判斷結束與開始

判斷字串strname是否已某字串開始或者結束

bool strname.startswith(string str)判斷開始

bool strname.endswith(string str)判斷結束 

字串總結?

其實就是模板彙總好伐 1 字串hash 可以解決一切字串問題。複雜度成迷。include using namespace std define maxn 10000 define read x scanf d x define maxm 1500 define ull unsigned long l...

字串總結

字串輸入輸出 getchar 與putchar include include using namespace std int main 兩種輸入方式 scanf c x 只讀取乙個字元 scanf s x 遇到空格,換行才會停止 cin與scanf s x 的作用大致相同 c char st 10...

字串總結

1 找出回文子串 分析 對於回文子串,最深的印象就是正序和倒序產生的字元相同。其實更深刻的表述方式應該是去除首尾字元後,裡面的依然是個回文子串。這一點也是我沒有想到的。利用動態規劃,相當於乙個遞迴歸納的想法,只要s i 1 j 1 是個回文子串,那麼在s i s j 時,s i j 就是個回文子串。...