C# String和StringBulider 字符串常用函数、区别

    String和StringBulider区别:(分配空间和线程的使用上来讲,StringBuilder肯定比String要高,但是前提是使用频率比较高的情况下)

    String 对象是不可变的。每次使用system.string类中的一个方法时,都要在内容中创建一个新的字符串对象,需要重新为新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的string对象相关的系统开销可能会变的很大。如果要修改字符串而不创建新的对象,使用StringBuilder类,循环中将许多字符串连接在一起的时,使用StringBuilder类会提高性能。

大多数的情况从性能比较:StringBuilder>String。

1、String用法

(1)String.IndexOf    —   String.IndexOf(value, startIndex, count)

String.IndexOf 方法 (Char, Int32, Int32):报告指定字符在此实例中的第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置。

参数: value:要查找的 Unicode 字符。startIndex:搜索起始位置。count:要检查的字符位置数。

返回值(Int32):

如果找到该字符,则为 value 的索引位置;否则如果未找到,则为 -1。

示例:

string str = "梧州市嗨嗨实业有限公司国际通苟海海*梧州市嗨嗨实业有限公司国际通苟海海";
string sub = str.IndexOf("中国").ToString();//返回 -1
string sub = str.IndexOf("嗨嗨").ToString();//返回 3
string sub = str.IndexOf("嗨嗨",10).ToString();//返回21 说明:这是从第10个字符开始查起。
string sub = str.IndexOf("苟",15,10).ToString();//返回 -1
string sub = str.IndexOf("苟",15,20).ToString();//返回 -32 说明:从第15个字符开始查找,要查找的范围是从第15个字符开始后20个字符,即从第15-35个字符中查找。

**************************************************************************************************************

(2)  String.LastIndexOf 方法

报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置。         

名称

说明

String.LastIndexOf (Char)

报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置。

String.LastIndexOf (String)

报告指定的 String 在此实例内的最后一个匹配项的索引位置。

String.LastIndexOf (Char, Int32)

报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置。该搜索从指定字符位置开始。

String.LastIndexOf (String, Int32)

报告指定的 String 在此实例内的最后一个匹配项的索引位置。该搜索从指定字符位置开始。

String.LastIndexOf (String, StringComparison)

报告指定字符串在当前 String 对象中最后一个匹配项的索引。一个参数指定要用于指定字符串的搜索类型。

String.LastIndexOf (Char, Int32, Int32)

报告指定的 Unicode 字符在此实例内的子字符串中的最后一个匹配项的索引位置。搜索从指定字符位置开始,并检查指定数量的字符位置。

String.LastIndexOf (String, Int32, Int32)

报告指定的 String 在此实例内的最后一个匹配项的索引位置。搜索从指定字符位置开始,并检查指定数量的字符位置。

String.LastIndexOf (String, Int32, StringComparison)

报告指定字符串在当前 String 对象中最后一个匹配项的索引。参数指定当前字符串中的起始搜索位置,以及要用于指定字符串的搜索类型。

String.LastIndexOf (String, Int32, Int32, StringComparison)

报告指定的 String 对象在此实例内的最后一个匹配项的索引位置。参数指定当前字符串中的起始搜索位置、要搜索的当前字符串中的字符数量,以及要用于指定字符串的搜索类型。

示例:

string str = "梧州市嗨嗨实业有限公司国际通苟海海*梧州市嗨嗨实业有限公司国际通苟海海";
string sub = str.LastIndexOf("苟文").ToString();//返回-1
string sub = str.LastIndexOf("苟").ToString();//返回32
string sub = str.LastIndexOf("苟",8).ToString();//返回-1
string sub = str.LastIndexOf("苟",20).ToString();//返回14
string sub = str.LastIndexOf("苟",33).ToString();//返回32

说明:在指定的范围内查找字符,这个范围是上面的输入的参数,理解为,从索引0开始到指定的数值位置范围内查找最后一个匹配的的字符串的位置。示例中,0-8中没有“苟”字,所以返回-1,0-20范围中,有一个“苟”字在索引14位置上,0-33范围中有两个“苟”字,因为LastIndexOf是返回最后一个匹配项索引位置,所以返32,而不是14。

(3) String.Substring:截取字符<str>以index开始截取,并截取lenth个字符     

String.Substring (Int32)

从此实例检索子字符串。子字符串从指定的字符位置开始。

String.Substring (Int32, Int32)

从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。

示例:

string str = "梧州市嗨嗨实业有限公司国际通苟海海*梧州市嗨嗨实业有限公司国际通苟海海";
string sub = str.Substring(11);//返回 “国际通苟海海*深圳市嗨嗨实业有限公司国际通苟海海”
string sub = str.Substring(11,7);//返回 “国际通苟海海*”

总结一下:

IndexOf、LastIndexOf都是返回一个位置,是个整数值;找不到都返回-1;

IndexOf是从左向右查,LastIndexOf是从右向左查,不管是IndexOf还是LastIndexOf,索引序列都是从左到右的(起始值是0)

Substring是字符串截取,返回值是一个截取后的字符串。

**************************************************************************************************************

(4)ToUpper(转换为大写)和ToLower(转换为小写)

 string s="RaSer";            string s1=s.ToUpper();  //s1="RASER";

(5)ToCharArray将字符串转化为字符数组(<string>.ToCharArray())

string str="雨已经小了"; 
char[] s=str.ToCharArray();//s=char[]{'雨',"已","经","小","了"};

(6)Trim() 出去两边的空格

string str="  dd  ";    string s=str.Trim();//s="dd";

(7)Split 将字符串<strName>以sep数组中的字符分割,分割后得到的内容存到一个数组中

string str="我,你的、她的;呀";                
string[] s=str.Split(new char(){',','、',';'});//s=string[]{"我","你的","她的","呀"};

(8)Remove删除字符串(字符):在字符串中移除从startIndex开始,长度为length的字符串,剩下的字符合为一个新的字符串

string str="天已经凉了";    string s=str.Remove(1,2);//s="天凉了";

(9)Insert 插入:在字符串的index位置上插入字符,原来的字符依次后移,变成一个新的字符串

string str="天凉了";    string s=str.Insert(1,"已经");//  s="天已经凉了"

(10)Replace 字符串(字符也是可以的)替换,返回新的字符串

string str="好咸呀";    string s=str.Replace("咸","清淡");//s="好清淡呀";

(11)Equals 比较两个字符串是否相等

string str1="asd";  
string str2="ert";
bool  b = str1.Equals(str2);  //b=false;

(12)Contains 判断字符串中是否包含某个字符,返回bool值。

string str="好咸呀"; 
bool  b=str.Contains("咸");  //b=true;

(13)EndsWith和StartsWith  判断是否是已某种字符串开始或者结束

string str="好大的山啊";
bool  b1=str.StartsWith("大"); //b1=false;
bool  b2-str.EndsWith("啊"); //b2=true;

(14)Join字符串的合并

string.Join(string str,string[] strArr);//将数组strArr中的内容拼接成一个新的字符串,并在对应数组的每两项间添加分隔符str

string strs=string.Join(",",string[]{"A","e","r","F"});//strs="A,e,r,F";

(15)IsNullOrEmpty判断字符是否为null或者为空,返回值为bool;

string str1="hahha";
bool b1=string.IsNullOrEmpty(str);//b1=false;
string str2="";
bool b2=string.IsNullOrEmpty(str2);//b2=true;
string str3=null;
bool b3=string.IsNullOrEmpty(str3);//b3=true;

(16)Format参数化处理,相当于Console.WriteLine();

string str=String.Format("明天{0}很冷","天气");//str="明天天气很冷";

(17)Compare 字符串的比较(按照字典顺序)  /  string.Compare(string str1,string str2,bool ignoreCase)   //忽略大小写比较

int result= string.Compare(string str1,string str2);
当str1 > str2时,返回1
当str1 = str2时,返回0
当str1 < str2时,返回-1

(18)Concat连接方法参数很多,常用的Concat(string str1,string str2);

string str=string.Concat("w","e"); //str="we";

(19)PadLeft、PadRight 为了让格式统一,当位数不足时,给予补足

"1".PadLeft(6);    //输出     1,字符串为右对齐,用空格填充
"1".PadLeft(6, '0');      //输出 000001,字符串为右对齐,长度不足用0填充
"1".PadRight(6);    //输出1     ,字符串为左对齐,用空格填充
"1".PadRight(6, '0');     //输出 100000,字符串为左对齐,长度不足用0填充

**************************************************************************************************************

2、StringBulider 的用法:

当需要操作很长的字符串,或者要对字符串进行非常频繁的操作时,应该使用StringBuilder,其余场合,用String比较方便

“StringBuilder类内部保留了一个私有的String 类型成员,当ToString()这个方法被调用时,这个String 类型成员将会被赋值并且返回给调用者。

(1)Append :追加   

StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");

(2)AppendFormat:带格式追加

int MyInt = 60;
StringBuilder MyStringBuilder = new StringBuilder("hes total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
//此示例将 hes total is $60.00 显示到控制台。

(3)Insert:插入    

StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。

(4)Remove:删除

StringBuilder   MyStringBuilder   =   new   StringBuilder("Hello   World!");  
MyStringBuilder.Remove(5,7);  
Console.WriteLine(MyStringBuilder);  

(5)Replace:覆盖

StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
此示例将 Hello World? 显示到控制台

**************************************************************************************************************

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值