C#字符串操作總結

1、C#判斷字符串爲空最通用的方法就是IsNullOrEmpty()無論是"", string.Empty還是null。

     如果字符串初始化爲null,則不能使用test3.Length == 0進行判斷。對於"",和string.Empty 使用s.Length == 0,s == string.Empty 和s == ""都可以,這裏面不討論性能問題

2、字符串操作函數

     

C#字符串函數大全

C#字符串函數大全將包括Len Len(string|varname) Trim Trim(string) Ltrim Ltrim(string)等多項內容

LenLen(string|varname)返回字符串內字符的數目,或是存儲一變量所需的字節數。

TrimTrim(string)將字符串前後的空格去掉

LtrimLtrim(string)將字符串前面的空格去掉

RtrimRtrim(string)將字符串後面的空格去掉

MidMid(string,start,length)string字符串的start字符開始取得length長度的字符串,如果省略第三個參數表示從start字符開始到字符串結尾的字符串

LeftLeft(string,length)string字符串的左邊取得length長度的字符串

RightRight(string,length)string字符串的右邊取得length長度的字符串

LCaseLCase(string)string字符串裏的所有大寫字母轉化爲小寫字母

UCaseUCase(string)string字符串裏的所有大寫字母轉化爲大寫字母

StrCompStrComp(string1,string2[compare])返回string1字符串與string2字符串的比較結果,如果兩個字符串相同,則返回0,如果小於則返回-1,如果大於則返回1

InStrInStr(string1,string2[,compare])返回string1字符串在string2字符串中第一次出現的位置

SplitSplit(string1,delimiter[,count[,start]])將字符串根據delimiter拆分成一維數組,其中delimiter用於標識子字符串界限。如果省略,使用空格("")作爲分隔符。

 

string[] rq1=new string[3];                   //此方法比較簡潔(分割字符串)

             rq1 = rq.Split('-');                        //單個字符作爲分隔符

           // rq1 = rq.Split(new char[] {'-','-'});        多個字符作爲分隔符

 

count返回的子字符串數目,-1指示返回所有子字符串。

start1執行文本比較;如果爲0或者省略執行二進制比較。

ReplaceReplace(expression,find,replacewith[,compare[,count[,start]]])返回字符串,其中指定數目的某子字符串(find)被替換爲另一個子字符串(replacewith)

C#字符串函數大全1Len函數示例:

下面的示例利用Len函數返回字符串中的字符數目:

Dim MyString MyString = Len("VBSCRIPT") ''MyString 包含 8。 C#字符串函數大全2TrimLtrimRtrim函數示例:

下面的示例利用LTrim,RTrim,Trim函數分別用來除去字符串開始的空格、尾部空格、

開始和尾部空格:

Dim MyVar MyVar = LTrim(" vbscript ") ''MyVar 包含 "vbscript "。 MyVar = RTrim(" vbscript ") ''MyVar 包含 " vbscript"。 MyVar = Trim(" vbscript ") ''MyVar 包含"vbscript"。 C#字符串函數大全3Mid函數示例:

下面的示例利用Mid函數返回字符串中從第四個字符開始的六個字符:

DimMyVar

MyVar=Mid("VB腳本isfun!",4,6)''MyVar包含"Script"

C#字符串函數大全4Left函數示例:

下面的示例利用Left函數返回MyString的左邊三個字母:

Dim MyString, LeftString MyString = "VBSCript" LeftString = Left(MyString, 3) ''LeftString 包含 "VBS C#字符串函數大全5Right函數示例:

下面的示例利用Right函數從字符串右邊返回指定數目的字符:

Dim AnyString, MyStr AnyString = "Hello World" ''定義字符串。 MyStr = Right(AnyString, 1) ''返回 "d"。 MyStr = Right(AnyString, 6) '' 返回 " World"。 MyStr = Right(AnyString, 20) '' 返回 "Hello World"。 C#字符串函數大全6LCase函數示例:

下面的示例利用LCase函數把大寫字母轉換爲小寫字母:

Dim MyString Dim LCaseString MyString = "VBSCript" LCaseString=LCase(MyString)''LCaseString包含"vbscript"

C#字符串函數大全7UCase函數示例:

下面的示例利用UCase函數返回字符串的大寫形式:

DimMyWord

MyWord=UCase("HelloWorld")''返回"HELLOWORLD"

C#字符串函數大全8StrComp函數示例:

下面的示例利用StrComp函數返回字符串比較的結果。如果第三個參數爲1執行文本比較;如果第三個參數爲0或者省略執行二進制比較。

DimMyStr1,MyStr2,MyComp

MyStr1="ABCD":MyStr2="abcd"''定義變量。

MyComp=StrComp(MyStr1,MyStr2,1)''返回0

MyComp=StrComp(MyStr1,MyStr2,0)''返回-1

MyComp=StrComp(MyStr2,MyStr1)''返回1

C#字符串函數大全9InStr示例:

下面的示例利用InStr搜索字符串:

DimSearchString,SearchChar,MyPos

SearchString="XXpXXpXXPXXP"

SearchChar="P"

MyPos=Instr(SearchString,SearchChar)''返回9.

注意:返回的不是一個字符串在另一個字符串中第一次出現的字符位置,而是字節位置。

C#字符串函數大全10Split函數示例:

DimMyString,MyArray,Msg

MyString="VBScriptXisXfun!"

MyArray=Split(MyString,"x",-1,1)

''MyArray(0)contains"VBScript".

''MyArray(1)contains"is".

''MyArray(2)contains"fun!".

Response.Write(MyArray(0))

C#字符串函數大全11Replace函數示例:

Replace("ABCD","BC","12")''得到A12D

 

 

1、從字符串中提取子串
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 ));

2、比較字符串
 String 類有四種方法:Compare( )CompareTo( )CompareOrdinal( )Equals( )
 Compare( )方法是CompareTo( )方法的靜態版本。只要使用運算符,就會調用Equals( )方法,的以Equals( )方法與是等價的。CompareOrdinal( )方法對兩個字符串比較不考本地語言與文件。
 示例:
 int result;
 bool bresult;
 s1="aaaa";
 s2="bbbb";
 //Compare( )method
 //result值爲0表示等,小於零表示 s1 < s2,大於零表示 s1 > s2
 result=String.Compare(s1,s2);
 result=s1.CompareTo( s2 );
 result=String.CompareOrdinal(s1,s2);
 bresult=s1.Equals( s2 );
 bresult=String.Equals( s1,s2 );
 一個例外情況是,兩個字符串都是內置的,並相等,靜態方法要快得多。

3、字符串格式化

3.1 格式化數字
 格式字符    說明和關聯屬性

cC       貨幣格式。
 dD       十進制格式。
 eE       科學計數(指數)格式。
 fF       固定點格式。
 gG       常規格式。
 nN       數字格式。
 rR       往返格式,確保將已轉換成字符串的數字轉換回數字時具有與原數字相同的值。
 xX       十六進制格式。

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=0.123F;
 Console.WriteLine(val.ToString("p"));  //displays 12.30 %
 Console.WriteLine(val.ToString("p1"));  //displays 12.3 %
 默認格式化會在數字和百分號之間放入一個空格。定製方法如下:
 其中NumberFormatInfo類是System.Globalization命名空間的一個成員,因此該命名空間必須導入到程序中。
 Single val=0.123F;
 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));cC       貨幣格式。
dD       十進制格式。
eE       科學計數(指數)格式。
fF       固定點格式。
gG       常規格式。
nN       數字格式。
rR       往返格式,確保將已轉換成字符串的數字轉換回數字時具有與原數字相同的值。
xX       十六進制格式。
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.142int val=65535;
Console.WriteLine(val.ToString("x"));  //displays ffff
Console.WriteLine(val.ToString("X"));  //displays FFFF
Single val=0.123F;Console.WriteLine(val.ToString("p"));  //displays 12.30 %
Console.WriteLine(val.ToString("p1"));  //displays 12.3 %
默認格式化會在數字和百分號之間放入一個空格。定製方法如下:
其中NumberFormatInfo類是System.Globalization命名空間的一個成員,因此該命名空間必須導入到程序中。
Single val=0.123F;
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)); 

3.2 格式化日期
輸出形式取決於用戶計算機的文化設置。
 using System;
 using System.Globalization;
 public class MainClass
 {
 public static void Main(string[] args) 
 {
         DateTime dt = DateTime.Now;
         String[] format = {"d","D","f","F","g","G","m","r","s","t", "T","u", "U","y","dddd, MMMM dd yyyy","ddd, MMM d ""'""yy","dddd, MMMM dd","M/yy","dd-MM-yy",};
         String date;
       for (int i = 0; i < format.Length; i++)
       {
          date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
          Console.WriteLine(String.Concat(format[i], " :" , date));
       }
      }
 }
 d :07/11/2004    <=======輸出
 D :Sunday, 11 July 2004
 f :Sunday, 11 July 2004 10:52
 F :Sunday, 11 July 2004 10:52:36
 g :07/11/2004 10:52
 G :07/11/2004 10:52:36
 m :July 11
 r :Sun, 11 Jul 2004 10:52:36 GMT
 s :2004-07-11T10:52:36
 t :10:52
 T :10:52:36
 u :2004-07-11 10:52:36Z
 U :Sunday, 11 July 2004 02:52:36
 y :2004 July
 dddd, MMMM dd yyyy :Sunday, July 11 2004
 ddd, MMM d "'"yy :Sun, Jul 11 '04
 dddd, MMMM dd :Sunday, July 11
 M/yy :7/04
 dd-MM-yy :11-07-04

3.3 格式化枚舉
enum classmen
 {
   ynn=1,
   yly=2,
   css=3,
   C++=4
 }
 獲取枚舉字符串信息如下:
 classmen myclassmen=classmen.yly;
 Console.WriteLine(myclassmen.ToString( ));   //displays yly
 Console.WriteLine(myclassmen.ToString("d")); //displays 2
 從系統枚舉中獲取文本人信息如下:
 DayOfWeek day=DayOfWeek.Friday;
 //displays "Day is Friday"
 Console.WriteLine(String.Format("Day is {0:G}",day));
 格式化字符串“ 把枚舉顯示爲一個字符串。

介紹一下常用的幾個功能:

Compare(str1,str2)——比較兩個字符串 str1,str2的大小,如果大於返回正數,等於返回0,小於返回負數!

IndexOf——定位字符串中第一次出現某個給定字符串的位置
PadLeftPadRight——在字符串的開始和結尾用指定的字符填充字符串
ToLowerToUpper把字符串轉換爲小寫或大寫形式
Trim——刪除首尾空白
String.Replace——用指定的字符替換字符串中的指定字符。

 

C#中字符串的建立過程:
例如定義變量 strT="Welcome to ";
strT+="www.csdn.net";
程序首先創建一個System.String 類型的對象並初始化爲Welcome to。此時編譯程度會分配足夠的內存來保存這個文本串。並用變量strT來表示這個實例。當執行strT+="www.csdn.net"時,系統會創建一個新的實例,並分配足夠的內存來保存複合後的文本。然後用變量strT來表示這個新的字符
串,就的字符串被撤消。當要進行大規模的字符替換與調整操作時,使用字符串來操作將嚴重影響性能。在這中情況下就可以用System.Text.StringBuilder類。
 
    StringBuilder類並沒有String 類的功能強大,只提供基本的替換和添加和刪除字符串中的文本,但它的工作效率非常高,當定義StringBuilder對象時可以指定內存的內存容量,如果不指定系統就會根據對象初始化時的字符串長度來確定。它有兩個主要參數LengthCapacity分別表示字符串的實際長度和字符串佔據的內存空間長度。對字符串的修改就是在這個內存中進行的,大大提高了添加和替換的的效率。
如定義:StringBuilder sb=new StringBuilder("Hello,Welcome",100);//初始化對象並設置初始容量爲100
sb.Append(" to www.csdn.net");
  sb.Replace(old,new);//old替換爲new,作用與String.Replace()一樣只是不需要在過程中複製字符。
StringBuilder的成員:
     StringBuilder sb=new StringBuilder("www.csdn.net");//定義初值爲www.csdn.net的對象。
     StringBuilder sb=new StringBuilder(20);初始化容量爲20的空對象。
     另外StringBuilder還有MaxCapacity屬性用來限定對象可以使用的最大容量。默認大約是int.MaxValue20億)
     可以在使用過程中定義sb.MaxCapacity=value;
     sb.Append(),給當前字符串追加字符串。
     sb.AppendFormat()——添加特定格式的字符串
     sb.Insert()——插入一個子字符串
     sb.Remove()——從當前字符串刪除字符
     sb.Replace()——替換字符串中指定的字符
     sb.ToString()——sb轉化爲String 對象

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章