字符串的应用
一、字符串特性介绍
- 字符串是一个char的集合,而char是Unicode的代码,所以char可以转化为int。
- 字符串在参数传递时,为引用传递,可以使用空字符串("")。
- 字符串(string):实际是在内存的托管堆上用一个变量名对应的存储空间内存储数据实际存储位置的地址
- string string_name=new string(char[])将一个字符串数组作为参数赋值给字符串变量
二、 字符串类型转换
- 可以用索引器来得到字符串中指定的字符,如:
string myString="hello";
char myChars;
myChars=myString[0]; - 要想得到一个char数组可以用如下方法:
char[] myChars = myString.ToCharArray();
异同:char[]与string的不同之处在于char[]可以读写,而string只能读。
- 转为int
int.parse(myString); - 转为string
用基类提供能的Tostring,如:
123.Tostring(); - 其他转化
Convert.To***( myString);如:
Convert.ToInt32("123");
Convert.ToBoolean("123");
Convert.ToBoolean("false");
Convert是一个形式转换的类,不止能转字符串,我们可以用它的静态方法实现好多类型转换 - 转义字符
单个的char用"\",字符可以用"@"
例如:@"C:\WINDOWS\system32" 和 "C:\\WINDOWS\\system32" 是等价的
三、字符串的比较
- String 类有四种方法:Compare( )、CompareTo( )、CompareOrdinal( )、Equals( )。
Compare( )方法是CompareTo( )方法的静态版本。
【异同】CompareTo不是静态方法,可以通过一个String对象调用;
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 );// bresult为true或false
一个例外情况是,两个字符串都是内置的,并相等,静态方法要快得多。
四、字符串的定位
- 查找子串
字符串.IndexOf(子串);子串第一次出现的位置;
字符串.LastIndexOf(子串);子串最后一次出现的位置 - StartsWith(string,):返回bool型,比较字符串是否以某个字符串开头。也可以string字符串后面加上一定的比较标准,例如是否忽略大小写等。
- EndsWith(string):返回bool型,比较字符串是否以某个字符串结尾
- SubString(int startindex,int length):从一个字符串中截取以指定开始位置个长度的字符串。
五、字符串的插入、截取
- 插入子串
字符串.Insert(插入位置,插入子串) ;
myString.Insert(2,"ab"); - 移出子串
字符串.Remove(其实位置,移出数);
myString.Remove(3,2); - 替换子串
字符串.Replace(源子串,替换为);
myString = myString.Replace("o"," ");将-替换为空格 - 截取子串
字符串.Substring(截取其实位置,截取个数);
"abcdef".Substring(2,3);结果为cde - 去空格
myString = myString.Trim(); //同时删除字符串前后的空格,但不能删除中间的空格
char[] trimChars = {' ','e','s'}; //准备删除的字符
myString = myString.Trim(trimChars); //删除所有指定字符
myString = myString.TrimEnd(); //删除字符串后的空格
myString = myString.TrimStart(); //删除字符串前的空格 - 拆分字符串
string[] Strs = myString.Split(char数组); //默认为空格分隔
注意:string[] Strs = myString.Split(char数组,数字);这个数字指的是返回指定子字符创中最大的数量
六、字符串的转换
- 转换大小写
str.ToLower()转化成小写字母
str.ToUpper()转化成大写字母
Char.IsUpper(str,3)//判断一个字符串中的第n个字符是否是大写 - 得到字符串长度
len=str.Length; - 字符串遍历
string myString = "This is a test!";
foreach (char myChar in myString)
{
Console.Write("{0}",myChar);
} - 颠倒字符串
class myreverse
{
static void Main(string [] args)
{
string mystring="你们好";
char[] mychars=mystring.ToCharArray( );
Array.Reverse(mychars);
Console.WriteLine(mystring);
Console.WriteLine(mychars);
}
}
任何继承于Array的类都能利用Reverse( )方法为数组中的元素重新排序。
七、字符串的复制
- 复制字符串
Copy(String s) 静态方法
功能:返回一个与给定字符串同值的新的字符串。
CopyTo(Int surceIndex,char[ ] destination,Int destIndex,Int count)
实例方法功能:此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
参数:
sourceIndex:字符串准备复制的起始位置。
destination :要复制的目标字符串。
destIndex :在目标字符串中准备复制的起始位置。
count:复制的字符串的长度。
Clone():将一个字符串克隆到另一个对象。
八、字符串的连接
- string.Join(string strfomat,para [] stringvalue)将一个IP地址分割后再用空格连接起
- Concat方法用于连接两个或多个字符串
- 连接运算符“+”
- 使字串达到指定长度
PadLeft()、PadRight() ,如:
string str1="00";
str1=str1.PadLeft(5,'1'); //无第二参数为加空格,结果为“11100”