C# 之 string字符串



前提:字符串变量 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中处理字符串可以使用多种方法,以下是几种常见的方法: 方法一:使用字符串的内置方法 可以使用字符串的内置方法来处理字符串,例如使用Contains()方法来检查字符串是否包含某个指定的子字符串,使用Replace()方法来替换字符串中的指定字符或子字符串。可以使用Substring()方法来获取字符串的子串。还可以使用Split()方法将字符串拆分成数组,使用Join()方法将数组拼接成字符串。 方法二:使用正则表达式 正则表达式是一种强大的字符串处理工具。可以使用正则表达式来匹配、查找、替换字符串中的特定模式。C#中提供了Regex类来操作正则表达式。 方法三:使用StringBuilder类 如果需要对字符串做大量的修改操作,可以使用StringBuilder类。StringBuilder类提供了一组方法来对字符串进行添加、删除、替换等操作。与字符串不同,StringBuilder对象可以直接修改,而不会创建新的字符串对象。 方法四:使用字符串的格式化 在C#中,可以使用字符串的格式化来对字符串进行处理。可以使用String.Format()方法或者使用插值表达式($)来将变量或表达式插入到字符串中。 总结:C#中有多种方法可以处理字符串,可以根据具体需求选择合适的方法。可以使用字符串的内置方法、正则表达式、StringBuilder类或者字符串的格式化来对字符串进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C#字符串(string)操作](https://blog.csdn.net/caoyanchao1/article/details/121547036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C# string字符串内存管理深入分析(全程干货)](https://blog.csdn.net/qq_52855744/article/details/126738039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值