c# 字符串处理

来源:互联网 发布:redis mysql完美结合 编辑:程序博客网 时间:2024/06/07 06:49

string字符串是char的集合,而char是Unicode的代码,所以string可以转化为int。
字符串在参数传递时为引用传递;可以使用空字符串(”")或null。
一、字符串类型转换
1.转为char
可以用索引器来得到字符串中指定的字符,如:
string myString=”hello”;
char myChars;
myChars=myString[0];
要想得到一个char数组可以用如下方法:
char[] myChars = myString.ToCharArray();

反转:

string str=new string(myChars);

string temp1 = new string(myChars,0,3); 0是开始位置,3是长度


char[]与string的不同之处在于char[]可以读写,而string只能读(改写只是对他的重构)


2.转为byte
byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
反转:
string string = Syste.Text.Encoding.ASCII.GetString( bytes, 0, nBytesSize );
3.转为int
int.parse(str); 

int temp

int.trypare(str ,out temp)返回true或false,成功值会保存到temp中。


4.转为string
用基类提供能的Tostring,如:
123.Tostring();
5.其他转化
Convert.To***(str);如:
Convert.ToInt32(”123″);
Convert.ToBoolean(”123″);
Convert.ToBoolean(”false”);
Convert是一个形式转换的类,不止能转字符串,我们可以用它的静态方法实现好多类型转换
6.转义字符
单个的char用”\”,字符可以用”@”
例如:@”C:\WINDOWS\system32″ 和 “C:\\WINDOWS\\system32″ 是等价的

二、常见字符串处理方法
1.字符串比较
字符串.ComparTo(目标字符串)
“a”.ComparTo(”b”);
2.查找子串
字符串.IndexOf(子串,查找其实位置)和indexofAny() ;
字符串.LastIndexOf(子串) ;最后一次出现的位置和LastIndexOfAny()
str.IndexOf(”ab”,0);

IndexOfAny方法功能同IndexOf类似,区别在于,它可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。同样,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的IndexOfAny重载形式有3种:

1int IndexOfAny(char[]anyOf)

2int IndexOfAny(char[]anyOf, int startIndex)

3int IndexOfAny(char[]anyOf, int startIndex, int count)

在上述重载形式中,其参数含义如下:

1anyOf:待定位的字符数组,方法将返回这个数组中任意一个字符第一次出现的位置。

2startIndex:在原字符串中开始搜索的其实位置。

3count:在原字符串中从起始位置开始搜索的字符数。

 


3.插入子串
字符串.Insert(插入位置,插入子串) ;
s.Insert(2,”ab”);
4.移出子串
字符串.Remove(其实位置,移出数);
s.Remove(3,2);
5.替换子串
字符串.Replace(源子串,替换为);
s.Replace(”-”,” “);将-替换为空格
6.截取子串
字符串.Substring(截取其实位置,截取个数);
“abcdef”.Substring(2,3);结果为cde
7.去空格
myString = myString.Trim(); //同时删除字符串前后的空格
char[] trimChars = {’ ‘,’e’,’s’}; //准备删除的字符
myString = myString.Trim(trimChars); //删除所有指定字符
myString = myString.TrimEnd(); //删除字符串后的空格
myString = myString.TrimStart(); //删除字符串前的空格
8.转换大小写
str.ToLower()转化成小写字母
str.ToUpper()转化成大写字母
Char.IsUpper(str,3)//判断一个字符串中的第n个字符是否是大写
9.拆分字符串
string[] Strs = myString.Split(’ ‘,3); //按照空格进行拆分,并且返回前三个字符串,结果在字符串数组里
10.使字串达到指定长度
PadLeft()、PadRight() ,如:
string str1=”00″;
str1=str1.PadLeft(3,’1′); //无第二参数为加空格,结果为“100”
11.得到字符串长度
len=str.Length;
12.字符串遍历
string myString = “This is a test!”;
foreach (char myChar in myString)
{
Console.Write(”{0}”,myChar);
}

补充说明:


compare(str1,str2)——比较两个字符串 str1,str2的大小,如果大于返回正数,等于返回0,小于返回负数!
indexof——定位字符串中第一次出现某个给定字符串的位置
PadLeft和PadRight——在字符串的开始和结尾用指定的字符填充字符串
ToLower和ToUpper把字符串转换为小写或大写形式
Trim——删除首尾空白
String.Replace——用指定的字符替换字符串中的指定字符。
C#中字符串的建立过程:
例如定义变量 strT=”Welcome to “;
strT+=”www.sinory.com”;
程序首先创建一个System.String 类型的对象并初始化为“Welcome to”。此时编译程度会分配足够的内存来保存这个文本串。并用变量strT来表示这个实例。当执行strT+=”www.sinory.com”时,系统会创建一个新的实例,并分配足够的内存来保存复合后的文本。然后用变量strT来表示这个新的字符
串,就的字符串被撤消。当要进行大规模的字符替换与调整操作时,使用字符串来操作将严重影响性能。在这中情况下就可以用System.Text.StringBuilder类。

    StringBuilder类并没有String 类的功能强大,只提供基本的替换和添加和删除字符串中的文本,但它的工作效率非常高,当定义StringBuilder对象时可以指定内存的内存容量,如果不指定系统就会根据对象初始化时的字符串长度来确定。它有两个主要参数Length和Capacity分别表示字符串的实际长度和字符串占据的内存空间长度。对字符串的修改就是在这个内存中进行的,大大提高了添加和替换的的效率。
如定义:StringBuilder sb=new StringBuilder(”Hello,Welcome”,100);//初始化对象并设置初始容量为100
      sb.Append(” to www.sinory.com”);
      sb.Replace(old,new);//将old替换为new,作用与String.Replace()一样只是不需要在过程中复制字符。
StringBuilder的成员:
    StringBuilder sb=new StringBuilder(”www.sinory.com”);//定义初值为www.sinory.com的对象。
    StringBuilder sb=new StringBuilder(20);初始化容量为20的空对象。
    另外StringBuilder还有MaxCapacity属性用来限定对象可以使用的最大容量。默认大约是int.MaxValue(20亿)
    可以在使用过程中定义sb.MaxCapacity=value;
    sb.Append(),给当前字符串追加字符串。
    sb.AppendFormat()——添加特定格式的字符串
    sb.Insert()——插入一个子字符串
    sb.Remove()——从当前字符串删除字符
    sb.Replace()——替换字符串中指定的字符
    sb.ToString()——将sb转化为String 对象

原创粉丝点击