博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#字符串处理

Posted on 2012-09-03 14:39  oilsun  阅读(227)  评论(0编辑  收藏  举报

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

char[] myChars = myString.ToCharArray();

char[]与string的不同之处在于char[]可以读写,而string只能读(改写只是对他的重构)
2.转为bety
byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
反转:
string string = Syste.Text.Encoding.ASCII.GetString( bytes, 0, nBytesSize );  
3.转为int
int.parse(str);
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(子串,查找其实位置) ;
字符串.LastIndexOf(子串) ;最后一次出现的位置
str.IndexOf("ab",0);
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);
}

---------------------------------------------------

-----------------

1 字符串分割

string url = "
[url]http://asdfsfd[/url][*]asdf[*]asdfsdf[*]";
string[] sss = GetString(url,"[*]");
foreach(string str in sss)
{
Response.Write(str.ToString() +" ");
}

private string[] GetString(string str,string cutStr)
{
char[] cutChar = cutStr.ToCharArray();
string[] sArray = str.Split(cutChar);
return sArray;
}

2 字符串截取

public static string GetFirstString(string stringToSub, int length) 
{
Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
bool isCut=false;
for(int i = 0; i < stringChar.Length; i++) 
{
if (regex.IsMatch((stringChar[i]).ToString())) 
{
sb.Append(stringChar[i]);
nLength += 2;
}
else 
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}

if (nLength > length)
{
isCut=true;
break;
}
}
if(isCut)
return sb.ToString()+"...";
else
return sb.ToString();
}

3.取子串函数SubString
string tmp2 = tmp1.SubString(0,3);
相当于vb.net中的mid
tring str="abcdefg";
string str1=str.Substring(2,3);//str1="cde"

4.C#中有什么函数可以判断某一字符串中是否存在着某一字符?如:"akkk*kkk"是否有“*”?

string s = "akkk*kkk";
int i = s.IndexOf("*");

if( i != -1) 包含
else 不包含

5.右对齐此实例中的字符,在左边用指定的 Unicode 字符填充以达到指定的总长度。
[C#] public string PadLeft(int, char);
str = "256";
str = str.PadLeft(5,"0"); //str = "00256"