1. 程式人生 > >字符串的使用(常用方法)

字符串的使用(常用方法)

依次 rim join方法 聲明 相等 wchar compare true body

字符串的使用(常用方法)

1、字符串的定義
語法:
string <name>;
<name> = <value>;

string <name> = <value>;

字符串是引用類型,在定義
string <name>;
的時候在棧空間中,定義了一個<name>的空間,該空間存放一個地址
當寫到
<name> = "The C# Programming Language";
的時候,會在堆內存分配一個空間,存放字符串"The C# Programming Language",並將首地址賦值給<name>
因此<name>指向定義的字符串

2、字符串的聲明
字符串string對應MSIL(CTS)中的String,實際上是一個類
那麽以前了解到,類需要使用new <構造方法>()來進行實例化,同樣字符串也行(這裏只介紹一種)
string <name> = new string(new char[] {...});
註:這裏String與string得到的效果一樣

這裏有個應用
字符串是不可變的,在內存中字符串一旦生成,將不會改變
即使之前使用的str1 + str2也只是生成了另一個字符串
那麽要修改字符串,怎麽處理呢?
這裏有個方法
<strName>.ToCharArray();
該方法會將字符串,變成一個char類型的數組,因此需要用一個char類型的數組接收

例:修改一個字符串裏面的內容
char[] ch = <strName>.ToCharArray();
// 處理字符數組,完成修改目的
<strName> = new string(ch);

3、字符串可以用索引訪問
字符串,原本就是排在一起的字符,C#提供了用“下標”(索引)來訪問字符串中的字符
例如:
string str = "jiangkun";
這裏內存中將“j”分配編號0,“i”分配編號1,然後依次增加...
因此,如果需要訪問k,數一數,編號是5,所以可以這麽來
char temp = str[5];
那麽得到的就是字符“k”

字符串也有一個Length屬性,可以得到字符串的長度


4、常見的字符串方法

4.1 字符串大小寫(字符)
string <strName>.ToUpper();
string <strName>.ToLower();
例:在等待用戶輸入的時候,常常不考慮用戶輸入的用戶名大小(或一個程序中規定使用的大小寫)
可以將用戶的輸入全部轉換成小寫、或大寫再來進行比較
如:
Console.WriteLine("請輸入用戶名");
string uid = Console.ReadLine().ToLower();
// 再將uid與系統中的數據進行比較

4.2 移除首尾指定字符
方法原型
string <strName>.Trim(); // 移除首尾的空格
string <strName>.TrimStart(); // 移除開頭的空格
string <strName>.TrimEnd(); // 移除結尾的空格
如果要指定移除的內容,可添加一個char數組作為參數
string <strName>.Trim(char[] ch);

例:在用戶輸入的時候,一般不考慮輸入兩邊的空格,而使用Trim()方法

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)表示是否區分大小寫
這裏true表示不區分大小寫,默認為false

Equals()方法
方法原型
bool <strName>.Equals(string str);
比較如果相等返回true,否則返回false

註:bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase)表示不區分大小寫

註:如果僅僅比較兩個字符串是否相等,還是使用“==”比較簡單
例如:
Console.WriteLine("請輸入一個字符串");
string str1 = Console.ReadLine();
Console.WriteLine("請輸入第二個字符串");
string str2 = Console.ReadLine();
// 不考慮大小寫的比較
bool isEqual = str1.ToLower() == str2.ToLower();

4.4 字符串的合並與分割
合並Join方法
將數組strArr中的內容拼接成一個字符串,並在對應數組的每兩項間添加分隔符str
string.Join(str,strArr);
方法原型
string string.Join(string str,string[] strArr);

字符串分割Split方法
方法原型:
string[] <strName>.Split(params char[] separator);
將字符串<strName>以separator數組中的字符分割,分割後得到的內容存到一個數組中

例:
// 分析這句話,提取這句話的單詞
string str = "Hello, How are you?";
string[] words = str.Split(‘ ‘,‘,‘,‘?‘);

註:返回的數組中可以有空字符串項,如果要去掉這些空字符串項,可以使用
string[] <strName>.Split(char[] separator,StringSplitOptions.RemoveEmptyEntries);

因此例子可改為
string str = "Hello, How are you?";
string[] words = str.Split(new char[]{‘ ‘,‘,‘,‘?‘},StringSplitOptions.RemoveEmptyEntries);

4.5 字符串查找
Contains方法
方法原型:
bool <strName>.Contains(string str);
表示字符串<strName>中是否包含str,如果包含,返回true,否則返回false
例:
Console.WriteLine("隨便輸入一串字母");
string str = Console.ReadLine();
if(str.Contains("abc"))
{
Console.WriteLine("字符串{0}中包含{1}",str,"abc");
}
else
{
Console.WriteLine("字符串{0}中不包含{1}",str,"abc");
}
IndexOf方法
常用的兩種形式:
int <strName>.IndexOf(string str); // 從頭開始,出現第一次的下標
int <strName>.IndexOf(string str,int startIndex); // 從startIndex開始,出現第一次的下標
如果沒有找到則返回-1
例:
string str = "C#語言基礎,講師蔣坤";
int res1 = str.IndexOf("蔣坤");
int res2 = str.IndexOf("蔣 坤");
Console.WriteLine(res1 + "\n" + res2);

註:LastIndexOf方法從最後一個開始匹配

IndexOfAny方法
方法原型:
int <strName>.IndexOfAny(char[] anyOf);
尋找字符數中的所有內容,返回第一個的位置

同樣有兩個參數的重載
int <strName>.IndexOfAny(char[] anyOf, int startIndex);

4.6 求子字符串
方法原型
string <strName>.Substring(int startIndex, 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(int startIndex, int length);

註:如果省略第二個參數,將移除startIndex後的所有字符串

4.7.3 替換
將字符串<strName>中的oldChar替換為newChar
<strName> = <strName>.Replace(oldChar,newChar);
方法原型:
string <strName>.Replace(char oldChar, char newChar);
同樣,這個替換的字符也可以是字符串
string <strName>.Replace(string oldValue, string newValue);
4.8 判斷結束與開始
判斷字符<strName>串是否以某字符串開始或結束
bool <strName>.StartsWith(string str);
bool <strName>.EndsWith(string str);


註:字符串具有不可變性,對字符串的修改,實際上都是重新得到一個字符串,重新賦值

字符串的使用(常用方法)