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 对象

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值