(1)取字串長度 <string>.Length;
(2)字串轉為位元碼 GetBytes(<string>)
(3)字串相加 推薦StringBuilder sb = new StringBuilder();sb.Append(<string>);
(4)截斷字串的一部分 變數.SubString(起始位置,截取位元);
(5)查指定位置是否為空白字元 char.IsWhiteSpace(字串變數,位元);
(6)查字元是否是標點符號 char.IsPunctuation(‘字元');
(7)把字元轉化為數字,查代碼點 (int)'變數'
(8)把數字轉為字元,查代碼代表的字元 (char)代碼
(9)清除字串前後包含的空格 變數.Trim()
(10)替換字串:字串變數.Replace(原字串,新的字串)
(11)刪除字串最後一個字元的3種方法
代碼如下 |
複製代碼 |
Eg:string s = “1,2,3,4,5,”; a) s.SubString(0,s.Length-1)//刪除最後一個逗號 b) s.ToString().RTrim(‘,');//刪除逗號,跟的變數是任何有效字串 c) s.TrimEnd(‘,');//刪除逗號,後面跟的變數是數組 char[] mychar={‘5',','};//刪除‘5‘以及',‘ s.TrimEnd(mychar);
|
(12)Split的3種方法
a) 用單個字元來分隔 <string>.Split(new char[]{‘字元'}) // <string>.Split(‘字元');
b) 用多個字元來分隔 <string>.Split(new char[2]{‘字元',''})
c) 用字串來分隔 Regex.Split(<string>,”字串”,RegexOptions.IgnoreCase);
(13)幾種輸出字串的格式
代碼如下 |
複製代碼 |
ToString(“n”); //產生12,345.00 ToString(“C”); //產生¥12,345.00 ToString(“e”); //產生1.234500e+004 ToString(“f4”); //產生12345.0000 ToString(“x”); //產生3039(16進位) ToString(“p”); //產生1,234,500.00% |
(14)把123456789轉換為12-345-6789的3種方法
代碼如下 |
複製代碼 |
(a)A = int.Parse(a).ToString(“##-###-####”); (b)A = a.Insert(5,”-”).Insert(2,“-”); (c)Using System.Text.RegularExpressions; //先引用 Regex reg = new Regex(@“^(d{2})(d{3})(d{4})$”); A = reg.Replace(a,”$1-$2-$3”); |
(15)輸出21個A的簡單方法 striing str = new string(‘A',21);
(16)得到隨機數的方法
代碼如下 |
複製代碼 |
Ramdom r = new Ramdom(); Int n1 = r.Next(); //返回非負隨機整數 Int n2 = r.Next(10); //返回一個小於所指定最大值(10)的非負隨機整數 Int n3 = r.Next()%10; //返回一個小於所指定最大值(10)的非負隨機整數 Int n4 = r.Next(1,20); //返回一個指定範圍(1~20)內的隨機整數 Int n5 = r.NextDouble(); //得到一個介於0.0~1.0之間的隨機整數 |
(17)Int32.TryParse(),Int32. Parse(),Convert.ToInt32()比較:
都是將字串轉換為整數數字
代碼如下 |
複製代碼 |
Int32.TryParse(string,out int); Int = Int32. Parse(string); Int = Convert.ToInt32(string);
|
比較:Convert.ToInt32()在null時不拋出異常而是返回零;Int32. Parse()會拋出異常;Int32.TryParse()不拋出異常,會返回true或false來說明解析是否成功。如果解析錯誤,則out調用放將會得到零值;
從效能上講,Int32.TryParse()優於Int32.Parse(),而Int32.Parse()優於Convert.ToInt32()。
建議:在.NET1.1下用Int32.Parse();在.NET2.0下用Int32.TryParse()。
補充
代碼如下 |
複製代碼 |
//獲得漢字的區位碼 byte[] array = new byte[2]; array = System.Text.Encoding.Default.GetBytes("啊"); int i1 = (short)(array[0] - ''''); int i2 = (short)(array[1] - ''''); //unicode解碼方式下的漢字碼 array = System.Text.Encoding.Unicode.GetBytes("啊"); i1 = (short)(array[0] - ''''); i2 = (short)(array[1] - ''''); //unicode反解碼為漢字 string str = "4a55"; string s1 = str.Substring(0,2); string s2 = str.Substring(2,2); int t1 = Convert.ToInt32(s1,16); int t2 = Convert.ToInt32(s2,16); array[0] = (byte)t1; array[1] = (byte)t2; string s = System.Text.Encoding.Unicode.GetString(array); //default方式反解碼為漢字 array[0] = (byte)196; array[1] = (byte)207; s = System.Text.Encoding.Default.GetString(array); //取字串長度 s = "iam方槍槍"; int len = s.Length;//will output as 6 byte[] sarr = System.Text.Encoding.Default.GetBytes(s); len = sarr.Length;//will output as 3+3*2=9 //字串相加 System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("i "); sb.Append("am "); sb.Append("方槍槍"); ///////////////////////////////////////////////////////////////////// string --> byte array byte[] data=Syste.Text.Encoding.ASCII.GetBytes(string); string --> byte byte data = Convert.ToByte(string); byte[]-->string string string = Encoding.ASCII.GetString( bytes, 0, nBytesSize ); // reverse 倒序輸出 string str = Console.ReadLine(); for (int i = str.Length - 1; i >= 0; i--) { Console.Write(str[i]); } Console.ReadLine(); |
對字串處理的常見功能
代碼如下 |
複製代碼 |
* 計算字串的長度 * string myString = "This is a test!"; Console.WriteLine("Text is :{0}",myString) Console.WriteLine("Text's long is :{0}",myString.Length) * 轉換大小寫 * myString = myString.ToLower(); //所有字元轉換成小寫 myString = myString.ToUpper(); //所有字元轉換成大寫 * 刪除前後空格 * myString = myString.Trim(); //同時刪除字串前後的空格 char[] trimChars = {' ','e','s'}; //準備刪除的字元 myString = myString.Trim(trimChars); //刪除所有指定字元 myString = myString.TrimEnd(); //刪除字串後的空格 myString = myString.TrimStart(); //刪除字串前的空格 * 添加空格 * myString = myString.PadRight(14,' '); //當字串長度不夠14位時,在他的右邊用指定輸入鍵台 myString = myString.PadLeft(14,' '); //當字串長度不夠14位時,在他的左邊用指定輸入鍵台 * 拆分字串 * string[] nStrs = myString.Split(' ',3); //按照空格進行拆分,並且返回前三個字串 * 擷取子字串 *
string a = myString.Substring(2,2); //從myString字串的第三位開始擷取兩個字元,因為索引起始位是0 * 替換字串中的字元 * string a = myString.Replace("i","o"); //將這個字串中的所有“i”替換成“o” C#中字串實際上是Char變數的唯讀數組。可以用下面的方法訪問字串中每一個字元,但是不能修改他們。
string myString = "This is a test!"; foreach (char myChar in myString) { Console.Write("{0}",myChar); } |
要想得到一個可讀寫的字元數組,你可以這樣。
char[] myChars = myString.ToCharArray();
特殊字元的表示方法
由於在C#中使用雙引號劃分字串的開始和結束,那麼對於一些特殊字元,例如雙引號本身就需要使用叫做逸出字元的輔助字元來表示了
字串的比較等常用操作
1.字串比較
代碼如下 |
複製代碼 |
string.Compare(x,y); <0: x 小於 y。 或 x 為空白引用。 =0: x 等於 y。 >0: x 大於 y。 或 y 為空白引用。 string.Equals(x,y); true x 等於 y。 false x 不等 y。 2.從字串中提取子串 StringBuilder 類沒有支援子串的方法,因此必須用String類來提取。 string mystring="My name is ynn."; //Displays "name is ynn." Console.WriteLine(mystring.Substring( 3 )); //Displays "ynn" Console.WriteLine(mystring.Substring( 11,3 ));
|
3.格式化數字
c、C 貨幣格式。
d、D 十進位格式。
e、E 科學計數(指數)格式。
f、F 固定點格式。
g、G 常規格式。
n、N 數字格式。
r、R 往返格式,確保將已轉換成字串的數字轉換回數字時具有與原數字相同的值。
x、X 十六進位格式。
代碼如下 |
複製代碼 |
double val=Math.PI; Console.WriteLine(val.ToString( )); //displays 3.14159265358979 Console.WriteLine(val.ToString("E"));//displays 3.141593E+000 Console.WriteLine(val.ToString("F3");//displays 3.142 int val=65535; Console.WriteLine(val.ToString("x")); //displays ffff Console.WriteLine(val.ToString("X")); //displays FFFF Single val=; Console.WriteLine(val.ToString("p")); //displays 12.30 % Console.WriteLine(val.ToString("p1")); //displays 12.3 %
|
預設格式化會在數字和百分比符號之間放入一個空格。定製方法如下:
其中NumberFormatInfo類是System.Globalization命名空間的一個成員,因此該命名空間必須匯入到程式中。
代碼如下 |
複製代碼 |
Single val=; object myobj=NumberFormatInfo.CurrentInfo.Clone( ) as NumberFormatInfo; NumberFormatInfo myformat=myobj as NumberFormatInfo; myformat.PercentPositivePattern=1; Console.WriteLine(val.ToString("p",myformat)); //displays 12.30%; Console.WriteLine(val.ToString("p1",myformat)); //displays 12.3%;
|
格式化具有很大的靈活性。下面的例子示範一個沒有意義的貨幣結構:
代碼如下 |
複製代碼 |
double val=1234567.89; int [] groupsize={2,1,3}; object myobj=NumberFormatInfo.CurrentInfo.Clone( ); NumberFormatInfo mycurrency=myobj as NumberFormatInfo; mycurrency.CurrencySymbol="#"; //符號 mycurrency.CurrencyDecimalSeparator=":"; //小數點 mycurrency.CurrencyGroupSeparator="_"; //分隔字元 mycurrency.CurrencyGroupSizes=groupsize; // 輸出 #1_234_5_67:89 Console.WriteLine(val.ToString("C",mycurrency)); |
最後一個類自己慢慢看吧
代碼如下 |
複製代碼 |
using System;
namespace testStringApp { /// <summary> /// Class1 的摘要說明。 /// </summary> class Class1 { /// <summary> /// 應用程式的主進入點。 /// </summary> [STAThread] static void Main(string[] args) { // // TODO: 在此處添加代碼以啟動應用程式 // //直接給字串賦值 string strA = "This is a string"; Console.WriteLine ("strA: "+strA); //ToCharArray方法,建立Char數組;IndexOf方法,尋找子串位置 char[] charArray = strA.ToCharArray(0,strA.IndexOf ("string")); //使用new關鍵字初始化字串,作用等同於charArray.ToString() string strB = new string (charArray); Console.WriteLine ("strB: "+strB); //Insert方法,插入子串 string strC = strA.Insert (strA.IndexOf ("string"),"another "); Console.WriteLine ("strC: "+strC); //+操作符,連接字串 string strD = strA + strB; Console.WriteLine ("strD: "+strD); //String.Concat方法,連結字串,相當於+ //String.Equals方法,比較字串,相當於== if (String.Equals (strD,String.Concat (strA,strB))) { if (strD == strA+strB) { Console.WriteLine ("String.Concat等同於+/n,System.Equals等同於=="); } } //Trim方法,刪除字串中的空格或其它字元 string strE = strA.Trim(); Console.WriteLine ("strE: "+strE); //使用/顯示引號"和反斜線/ string strF = "C://Windows//System32//"; Console.WriteLine ("/"" + strF + "/""); //使用@顯示引號"和反斜線/ string strG = @"C:/Windows/System32/"; Console.WriteLine (@"""" + strG + @""""); //string轉換為int型 string strH = "12345"; int theInt = int.Parse (strH); Console.WriteLine ("科學計數顯示整數{0:E}",theInt); Console.WriteLine ("十六進位顯示整數{0:X}",theInt); //string轉換為float型 string strI = "123.45"; float theFloat = float.Parse (strI); Console.WriteLine ("顯示浮點數,指定小數位元{0:F4}",theFloat); Console.ReadLine(); } } }
|
1)截取字串
使用substring方法,而該方法在c#中有兩個重載函數:substring(參數),substring(參數1,參數2),用法如下:
代碼如下 |
複製代碼 |
string A ="I'm a string"; sting B=A.substring(1); sting C=A.substring(1,6);
|
其中傳入的參數1為字串的起始位置,字元子串B將截取字串A的第2個字元之後所有的字元.
字元子串C將截取字串A的第2個字元之後的長度為6的字串.
參數必須大於等於0,如果小於0將拋出ArgumentOutOfRange異常.
2)字串轉化為字元數組
首先,string類型變數可以看成為char變數的唯讀數組,這樣就可以使用如下文法訪問每個字元:
string A = "i'm a string"
char B =A[1];
而要是把字串變為可寫的char數組,可以使用TocharArray()方法:
char [] = A.Tochararray();
使用B.Length擷取字串的長度.
3)轉換大小寫
<string>.ToLower() 轉換成小寫
<string>.ToUpper() 轉換成大寫
4)刪除字串種的空格或者指定的字元
刪除字串前後的空格:
<string>.Trim()
刪除指定的字元:
首先利用char數組指定特定字元
char[] C ={' ','e',}
<string>.Trim(C)
也可以使用Trimstart(),TrimEnd()分別去除前後的空格或者指定的字元
5)在字串前後添加空格或者指定的字元
<string>.PadLeft(參數) <string>.PadRight(參數) 參數為添加空格後字串的長度
<string>.PadLeft(參數1,參數2) 參數1為使字串達到的長度,參數2為指定添加的字元.
6)indexof()的用法
IndexOf()
尋找字串中指定字元或字串首次出現的位置,返回首索引值,如:
str1.IndexOf("字"); //尋找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//尋找“字串”的第一個字元在str1中的索引值(位置)
str1.IndexOf("字",start,end);//從str1第start+1個字元起,尋找end個字元,尋找“字”在字串STR1中的位置[從第一個字元算起]注意:start+end不能大於str1的長度
7)insert()的用法
<string>.insert(參數1,參數2)
參數1為插入子字串的其實位置,參數2為要插入的子字串
8)比較字串的大小
Compare(str1,str2)——比較兩個字串 str1,str2的大小,如果大於返回正數,等於返回0,小於返回負數
9)替換指定的字串
String.Replace(參數1,參數2)——用指定的字元替換字串中的指定字元
字串的處理方法還有很多,這裡就不一一列舉了,以後用到在慢慢學習.