C# 之 string字符串

来源:互联网 发布:程序员公众号 编辑:程序博客网 时间:2024/06/05 11:06


前提:字符串变量 mystr="   I am a string ! ...       ";

1.判断字符串是否为null 或 空白符:

 string.IsNullOrWhiteSpace(mystr)   (true|false)

       判断字符串是否为null 或 空:string.IsNullOrEmpty(mystr)   (true|false)

2.C#去除字符串中的空格\s、回车\n、换行符\r\n、制表符\t(正则表达式法)

  格式:newName = Regex.Replace(newName,pattern, txtReplaceNew, RegexOptions.IgnoreCase); 

//content_needNoindent为要检查的字符串,pattern为要替换的特殊字符    string pattern = @"\s|\t|\r|\n";    string newstr = Regex.Replace(content_needNoindent, pattern, "");

3. 转义字符"\"

字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。 如果希望包含反斜杠,则它前面必须还有另一个反斜杠,如“\\”。

4. “@”符号

@符号会告知字符串构造函数忽略转义符和分行符。

因此,以下两个字符串是完全相同的:

stringp1 = "\\\\MyDocuments\\MyFiles\\";  stringp2 = @"\\MyDocuments\MyFiles\"; 

5. 字符类型转字符串

12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00%


另外,可以通过参数格式化ToString()的显示输出。如,对于时间类型格式,可以通过ToString()方法自定义时间显示格式。如:

System.DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss.fff");  //outputs"2009-03-1118:05:16.345" //"MM":指定月份为2位字符串,不足2位则前方补"0";"M":为月份数值转换的字符串;//"HH":表示24小时制的小时;"hh"表示12小时制的小时;


格式化数值结果表


6. SubString()

格式:Substring(intstartindex,intlen)

用于获取源字符串指定起始位置startindex,指定长度len的字符串。

参数Startindex索引从0开始,且最大值必须小于源字符串的长度,否则会编译异常;

参数len的值必须不大于源字符串索引指定位置开始,之后的字符串字符总长度,否则会出现异常;

strings4 = "Visual C# Express";  System.Console.WriteLine(s4.Substring(7,2)); //outputs"C#" System.Console.WriteLine(s4.Replace("C#","Basic")); //outputs"VisualBasicExpress"

7. Replace()

格式:Replace(stringoldValue,stringnewValue)

用于C#字符串中特定字符串组合的替换,即将源字符串中的所有oldValue字符串替换为newValue字符串。

strings5 = "Visual C# Express";  System.Console.WriteLine(s5.Replace("C#","VB"));//outputs"VisualVBExpress"

8. Split()

   将字符串拆分为子字符串(如将句子拆分为各个单词)是一个常见的编程任务。Split()方法使用分隔符(如空格字符)char数组,并返回一个子字符串数组。您可以使用foreach访问此数组。

char[] delimit = new char[]{''}; //字符数组指示哪些字符被用作分隔符    string s14 = "The cat sat on the mat.";     foreach(string substr in s14.Split(delimit))     {         System.Console.WriteLine(substr);     } 

此代码将在单独的行上输出每个单词,如下所示:

The

cat

sat

on

the

mat.

下面的代码示例演示如何使用System.String.Split方法分析字符串。此方法返回一个字符串数组,其中每个元素是一个单词。作为输入,Split采用一个字符数组指示哪些字符被用作分隔符。本示例中使用了空格、逗号、句点、冒号和制表符。一个含有这些分隔符的数组被传递给Split,并使用结果字符串数组分别显示句子中的每个单词。

示例:

Class TestStringSplit  {      Static void Main()     {        char[] delimiterChars = {' ',',','.',':','\t'};         string text= "one\ttwothree:four,fivesixseven";         System.Console.WriteLine( "Originaltext:'{0}'", text);         string[] words=text.Split(delimiterChars);        System.Console.WriteLine("{0}wordsintext:",words.Length);         foreach(string s in words)         {            System.Console.WriteLine(s);         }       } } 

另外,还可通过正则表达式Regex.Split()的方法,通过C#字符串分隔字符串。

示例:

Using System.Text.RegularExpressions;<span style="color:#cc0000;">//需要引用正则表达式的命名空间</span>string str = "aaajsbbbjsccc";  string[]sArray = Regex.Split(str,"js",RegexOptions.IgnoreCase);//正则表达式//RegexOptions.IgnoreCase表示忽略字母大小写foreach(string I in sArray) Response.Write(i.ToString()+""); 

9. Trim()

Trim()从当前String对象移除所有前导空白字符和尾部空白字符。

10. ToCharArray()

格式:ToCharArray(intstartindexintlen)

用于将字符复制到字符数组

string s8 = "Hello,World";  char[]arr = s8.ToCharArray(0,s8.Length);  foreach(char c in arr)  {     System.Console.Write(c);//outputs"Hello,World" } 

修改字符串内容

字符串是不可变的,因此不能修改字符串的内容。但是,可以将字符串的内容提取到非不可变的窗体中,并对其进行修改,以形成新的字符串实例。

下面的示例使用ToCharArray方法来将字符串的内容提取到char类型的数组中。然后修改此数组中的某些元素。之后,使用char数组创建新的字符串实例。

classModifyStrings  {     Static void Main()     {       String str = "Thequickbrownfoxjumpedoverthefence";        System.Console.WriteLine(str);      Char []chars = str.ToCharArray();       int animalIndex = str.IndexOf("fox");       if(animalIndex!=-1)        {           chars[animalIndex++]='c';            chars[animalIndex++]='a';            chars[animalIndex]='t';         }         stringstr2 = newstring(chars);         System.Console.WriteLine(str2);      }  } 

输出:

Thequickbrownfoxjumpedoverthefence

Thequickbrowncatjumpedoverthefence

11.索引访问字符串中的各个字符str[index]

格式:mystr[intindex]

逆序排列字符串

string s9 = "Printingbackwards"; for(int i=0; i< s9. Length; i++){     System.Console.Write(s9[s9.Length-i-1]);//outputs"sdrawkcabgnitnirP"} 

12. 更改大小写,ToUpper()和ToLower()

若要将字符串中的字母更改为大写或小写,可以使用ToUpper()ToLower()。如下所示:

13. 忽略大小写

str.EndsWith(name,StringComparison.CurrentCultureIgnoreCase);String.Equals(str1,str2,StringComparison.CurrentCultureIgnoreCase);

14. 比较

比较两个字符串的最简单方法是使用==!=运算符(字符串这两个方法已经重载了,还有+),执行区分大小写的比较。

string color1="red";  string color2="green";  string color3="red";  if(color1==color3)  {     System.Console.WriteLine("Equal");  }  if(color1!=color2)  {     System.Console.WriteLine("Notequal");  } 

15. CompareTo()

字符串对象也有一个CompareTo()方法,它根据某个字符串是否小于(<)或大于(>)另一个,返回一个整数值。比较字符串时使用Unicode值,小写的值小于大写的值。

string s121="ABC";  string s122="abc";  if(s121.CompareTo(s122)>0)  {     System.Console.WriteLine("Greater-than");  }  else{     System.Console.WriteLine("Less-than");  } 


16. IndexOf()字符串索引(包含某个字符串)

若要在一个字符串中搜索另一个字符串,可以使用IndexOf()。如果未找到搜索字符串,IndexOf()返回-1;否则,返回它出现的第一个位置的索引(从零开始)。

string s13="BattleofHastings,1066";  System.Console.WriteLine(s13.IndexOf("Hastings"));//outputs10 System.Console.WriteLine(s13.IndexOf("1967"));//outputs-1


string类型(它是System.String类的别名)为搜索字符串的内容提供了许多有用的方法。下面的示例使用IndexOfLastIndexOfStartsWithEndsWith方法。


17. 使用StringBuilder

StringBuilder类创建了一个字符串缓冲区,用于在程序执行大量字符串操作时提供更好的性能。StringBuilder字符串还允许您重新分配个别字符,这些字符是内置字符串数据类型所不支持的。例如,此代码在不创建新字符串的情况下更改了一个字符串的内容:

System.Text.StringBuilder sb = newSystem.Text.StringBuilder("Rat:theidealpet");  sb[0] ='C';  System.Console.WriteLine(sb.ToString());//displays Cat:theidealpet System.Console.ReadLine(); 

在以下示例中,StringBuilder对象用于从一组数值类型中创建字符串。

Class TestStringBuilder  {     Static void Main()     {         System.Text.StringBuilder sb=newSystem.Text.StringBuilder();       //Createastringcomposedofnumbers0-9       for(inti=0;i<10;i++)          {              sb.Append(i.ToString());          }         System.Console.WriteLine(sb);//displays0123456789       //Copyonecharacterofthestring(notpossiblewithaSystem.String)        sb[0] = sb[9];         System.Console.WriteLine(sb);//displays9123456789    }  } 






0 0
原创粉丝点击