您的位置:首页 > 产品设计 > UI/UE

C#菜鸟之漫漫长路~~~char,string,StringBuilder

2013-02-05 11:57 274 查看



1.char类

char a = 'a';     Console.WriteLine("IsLetter方法判断a是否为字母:{0}", Char.IsLetter(a));

char b = '8';     Console.WriteLine("IsDigit方法判断b是否为数字:{0}", Char.IsDigit(b));


结果是True。

string Str1 = "深藏功与名!"; //声明一个字符串变量Str1

char Str2 = Str1[1];     //获取字符串Str1的第二个字符

char Str3 = Str1[2];     //获取字符串Str1的第三个字符


查找的方法。

2.字符串类String的使用

比较字符串

在C#中最常见的比较字符串的方法有Compare、CompareTo和Equals方法等,这些方法都归属于String类。

(1)Compare方法

Int compare(string strA,string strB)

Int Compare(string strA,string strB,bool ignorCase) ——— bool ignorCase的值是表示是否忽略大小写

(2)CompareTo方法

public int CompareTo (string strB)

(3)Equals方法

public bool Equals (string value)

public static bool Equals (string a,string b)
(字符串大小不是由长短决定的,是前面字母的顺序决定。A比a大;B比A大,类推)
  string Str1 = "a";                    //声明一个字符串Str1
string Str2 = "A";                    //声明一个字符串Str2

Console.WriteLine(String.Compare(Str1, Str2));
Console.WriteLine(String.Compare(Str1, Str1));        //输出字符串Str1与Str1比较后的返回值
Console.WriteLine(String.Compare(Str2, Str1));        //输出字符串Str2与Str1比较后的返回值

Console.WriteLine(Str1.CompareTo(Str2));

Console.WriteLine(Str1.Equals(Str2));                       //用Equals方法比较字符串Str1和Str2
Console.WriteLine(String.Equals(Str1, Str2));		//用Equals方法比较字符串Str1和Str2
Console.ReadLine();


compare和compareTo区别貌似不大

equals的效率高些,compareTo其实就是按照编码的数值做差,它能确定两个String在字典顺序上的前后性,
如果你只是想知道是否相同时,用equals也行,效果一样。

另外,equals是Object的方法,要求涉及到比较操作的继承类要自己重写该方法,所以String重写了equals,而compareTo为String的方法。所以:
value1.compareTo(value2),当value1不为String类型时,会报错。
而value1.equals(value2),都会进行比较。 (摘抄,嗯。)




格式化字符串

在C#中,String类提供了一个静态的Format方法,用于将字符串数据格式化成指定的格式,其语法格式如下。

Public static string Format(string format, object obj);

其中:format用来指定字符串所要格式化的形式;obj是只要被格式化的对象。

int StrA = 1;
int StrB = 2;
string newstr = String.Format("{0},{1}!!!", StrA, StrB);                    //格式化字符串
Console.WriteLine(newstr);


显然结果是 : 1,2!!!

截取字符串

String类提供了一个Substring方法,该方法可以截取字符串中指定位置和指定长度的字符,其语法格式如下。

public string Substring (intstartIndex,int length)

其中:startIndex表示子字符串的起始位置的索引;length表示子字符串中的字符数

string StrA = "此情可待成追忆";                                //声明字符串StrA
string StrB;                                        //声明字符串StrB
StrB = StrA.Substring(1, 4);                                //截取字符串
Console.WriteLine(StrB);                                //输出截取后的字符串


显然结果是 : 情可待成

分割字符串

String类提供了一个Split方法,用于分割字符串,此方法的返回值是包含所有分割子字符串的数组对象,可以通过数组取得所有分割的子字符串,其语法格式如下。

public string [ ] split ( params char [ ] separator);

其中:separator是一个数组,包含分隔符。
string StrA = "用^一生#下载,你";                                     //声明字符串StrA
char[] separator = { '^', '#', ',' };                              //声明分割字符的数组
String[] splitstrings = new String[100];                           //声明一个字符串数组
splitstrings = StrA.Split(separator);                              //分割字符串
for (int i = 0; i < splitstrings.Length; i++)
{
Console.WriteLine("item{0}:{1}", i, splitstrings[i]);
}
Console.ReadLine();


插入和填充字符串

(1)插入字符串

public string Insert (intstartIndex, string value);

其中:startIndex用于指定所要插入的位置,索引从0开始;value指定所要插入的字符串。

string str1 = "我你";
string str2;
str2 = str1.Insert(1, "喜欢");                    //使用Insert方法向字符串str1中插入字符串
Console.WriteLine(str2);                        //输出字符串变量str3
Console.ReadLine();


显然结果是 :我喜欢你

(2)填充字符串

public string PadLeft(inttotalWidth,charpaddingChar);

其中:totalWidth指定填充后的字符长度;paddingChar指定所要填充的字符,如果省略,则填充空格符号。
string str1 = "*_*";                        //声明一个字符串变量str1

string str2 = str1.PadLeft(4, '(');//声明一个字符串变量str2,并使用PadLeft方法在str1的左侧填充字符“(”
string str3 = str2.PadRight(5, ')');//声明一个字符串变量str3,并使用PadRight方法在str2右侧填充字符“)”

Console.WriteLine("补充字符串之前:" + str1);        //输出字符串str1
Console.WriteLine("补充字符串之后:" + str3);        //输出字符串str2
Console.ReadLine();


删除字符串

Remove方法用于从一个字符串的指定位置开始,删除指定数量的字符,其语法格式如下。

Public String Remove ( intstartIndex);

Public String Remove ( intstartIndex, int count);

其中:startIndex用于指定开始删除的位置,索引从0开始;count指定删除的字符数量。

string str1 = "心有灵犀一点通";                        //声明一个字符串变量str1,并初始化

string str2 = str1.Remove(1,3);//声明一个字符串变量str2,并使用Remove方法从字符串str1的索引1处开始删除三个字符

Console.WriteLine(str2);                        //输出字符串str2
Console.ReadLine();


复制字符串

1.Copy方法

创建一个与指定的字符串具有相同值的字符串的新实例,其语法格式如下。

public static string Copy (string str);

其中:str是指要复制的字符串;返回值是与str具有相同值的字符串。

string stra = "我爱你";                                //声明一个字符串变量stra并初始化
string strb;                                            //声明一个字符串变量strb
//使用String类的Copy方法,复制字符串stra并赋值给strb
strb = String.Copy(stra);
Console.WriteLine(strb);                                //输出字符串strb
Console.ReadLine();


2.CopyTo方法

CopyTo方法可以将字符串的某一部分复制到另一个数组中,其语法格式如下。

Public void CopyTo(intsourceIndex,char[ ]destination,intdestinationIndex,int count);

string str1 = "若不离不弃";                    //声明一个字符串变量str1并初始化
char[] str = new char[100];                        //声明一个字符数组str
//将字符串str从索引1开始的4个字符串复制到字符数组str中
str1.CopyTo(1, str,1, 4);   //1表示前面空1个位置
Console.WriteLine(str);                        //输出字符数组中的内容
Console.ReadLine();


替换字符串

String类提供了一个Replace方法,用于将字符串中的某个字符或字符串替换成其他的字符或字符串,其语法格式如下。

public string Replace(char OChar,charNChar)

public string Replace(string OValue,stringNValue)

string a = "one world,one dream";                //声明一个字符串变量a并初始化
//使用Replace方法将字符串a中的“,”替换为“*”,并赋值给字符串变量b
string b = a.Replace(',', '*');
Console.WriteLine(b);


3.可变字符串类StringBuilder的使用

StringBuilder 类类似于string类型,但是功能更强。虽然String类功能很强,但是它也是不可改变的。这就是说一旦创建String对象,就不能够修改。表面看来能够修改字符串的所有方法实际上不能够修改。它们实际上返回一个根据所调用的方法修改的新的String。当需要大量的修改时,可使用StringBuilder类。

StringBuilder类存在于System.Text命名空间中,如果要创建StringBuilder对象,首先必须引用此命名空间
方 法
说 明
Remove
从当前StringBuilder对象中移除指定数量的字符
Replace
用另一个指定的字符来替换StringBuilder对象内的字符
Append
将文本或字符串追加到指定对象的末尾
AppendFormat
自定义变量的格式并将这些值追加到StringBuilder对象的末尾
Insert
将字符串或对象添加到当前StringBuilder对象中的指定位置
例如:创建一个StringBuilder对象,其初始引用的字符串为“Hello World!”,代码如下。

StringBuilderMyStringBuilder = new StringBuilder("Hello World!")

int Num = 1000;                            //声明一个int类型变量Num并初始化为1000
//实例化一个StringBuilder类,并初始化为“用一生下载你”
StringBuilder LS = new StringBuilder("用一生下载你", 100);
LS.Append("VS芸烨湘枫");                    //使用Append方法将字符串追加到LS的末尾
Console.WriteLine(LS);                        //输出LS
//使用AppendFormat方法将字符串按照指定的格式追加到LS的末尾
LS.AppendFormat("{0:C}", Num);
Console.WriteLine(LS);                        //输出LS
LS.Insert(0, "名称:");                        //使用Insert方法将“名称:”追加到LS的开头
Console.WriteLine(LS);                        //输出LS
//使用Remove方法从LS中删除索引15以后的字符串
LS.Remove(15, LS.Length - 15);
Console.WriteLine(LS);                        //输出LS
//使用Replace方法将“名称:”替换成“一生所爱”
LS.Replace("名称", "一生所爱");

Console.WriteLine(LS);                        //输出LS
Console.ReadLine();


结果如图:



* StringBuilder类与String类的区别

String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: