在学习字符和字符串之前,先了解一下ASCII和Unicode。
字符的ASCII和Unicode码:
1,认识:
ASCII:计算机中最常使用的计算机编码符号,所支持的是英文国家支持的英文字母、阿拉伯数字、和英文符号。不支持其他国家语言。
具体一点说:
ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字(8bits)。因此,ASCII编码可以表示的最大字符数是256,其中包括了控制字符、数字、大小写字母和其他一些符号
(注:其实英文字符并没有那么多,一般只用前128个(最高位为0))
这种字符编码规范显然只能用来处理英文(也可以处理法文、德文等一些西欧字符,但是不能喝英文通用),但是对于像中文、阿拉伯文这样的复杂的文字,255个字符肯定不够用。
于是,很多国家制定了自己的文字编码规范。问题是:这些编码规范并不统一。
逐渐的,Unicode编码规范诞生了。
Unicode(统一的编码):是一种字符编码规范。编码体系中可以包含很多字符,足以包含大部分国家的应用字符。
2,两者之间的转换
(1)例子:
namespace Ascii与unicode之间的转换
{
class Program
{
static void Main(string[] args)
{
char ch = 'a';
Console .WriteLine ("ASCII码:"+ch +"强制转换成short后为:"+(short )ch );
short ii=65;
Console .WriteLine ("short型变量"+ii + "强制转换成char后为:"+(char) ii );
char cn = '中';
Console.WriteLine ("在Unicode编码中" + "”"+ cn + "”" +"是"+(short )cn );
short uc=22478;
Console .WriteLine ("short变量:"+uc +"强制转换成char后为"+"“"+(char )uc +"”");
}
}
}
运行结果:
接下来介绍一下本章的一些重点知识。
1,字符类常用方法(举例);
2,字符串类常用方法(举例);
3,可变字符串类常用方法(举例);
4,字符串和字符数组之间的转换(举例);
5,StringBuilder类与String类的区别(叙述);
以下是我做的一些例子,希望能帮助大家理解:
1,字符类常用方法
namespace char的常用方法
{
class Program
{
static void Main(string[] args)
{
char a = 'a';
char b = '3';
char c = 'L';
char d = '.';
char e = 'l';
char f = ' ';
//使用isLetter方法判断a是否为字母
Console.WriteLine("isLetter方法判断a是否为字母:{0}", char.IsLetter(a));
//使用isDigit方法判断b是否为数字
Console.WriteLine("isDigit方法判断b是否为数字:{0}", char.IsDigit(b));
//使用isLetterOrDigit方法判断c是否为字母或数字
Console.WriteLine("isLetterOrDigit方法判断c是否为字母或数字:{0}", char.IsLetterOrDigit(c));
//使用isLower方法判断a是否为小写字母
Console.WriteLine("isLower方法判断a是否为小写字母:{0}", char.IsLower(a));
//使用isUpper方法判断c是否为大写字母
Console.WriteLine("isUpper方法判断c是否为大写字母:{0}", char.IsUpper(a));
//使用isPunctuation方法判断d是否为标点符号
Console.WriteLine("isPunctuation方法判断d是否为标点符号:{0}", char.IsPunctuation(d));
//使用isSeparator方法判断e是否为分隔符
Console .WriteLine ("isSeparator方法判断e是否为分割符:{0}",char .IsSeparator (e ));
//使用isWriteSpace方法判断f是否为空白
Console .WriteLine ("isWriteSpace方法判断f是否为空白:{0}",char .IsWhiteSpace (f ));
Console .ReadLine ();
}
}
}
运行结果:
2,(1)使用Compare方法比较两个字符串是否相等
namespace 字符串常用方法
{
class Program
{
static void Main(string[] args)
{
string str1="我想吃苹果";
string str2="我们去运动吧";
//使用Compare方法比较两个字符串是否相等
Console.WriteLine(string.Compare(str1, str2));
Console.WriteLine(string.Compare(str2, str1));
Console.WriteLine(string.Compare(str1, str1));
Console.ReadLine();
}
}
}
运行结果:
(2)使用Format方法将字符串格式化为指定格式
namespace 字符串常用方法2_Format_
{
class Program
{
static void Main(string[] args)
{
string str1 = "我喜欢吃苹果";
string str2 = "你知道吗";
string newstr = string.Format("{0},{1}!!!", str1, str2);
Console.WriteLine(newstr);
Console.ReadLine();
}
}
}
运行结果:
3,
namespace StringBuilder类常见方法
{
class Program
{
static void Main(string[] args)
{
int Num = 1000;
StringBuilder Ls=new StringBuilder ("我喜欢吃苹果",100);
//使用Append方法将字符串追加到LS的末尾
Ls .Append ("AND 大鸭梨");
Console .WriteLine (Ls);
//使用AppendFormat方法将字符串按照指定的格式追加到LS的末尾
Ls .AppendFormat ("{0:C}",Num );
Console .WriteLine (Ls);
//使用Insert方法将“爱好:”追加到LS开头
Ls.Insert (0,"爱好:");
Console .WriteLine (Ls);
//使用Remove方法从LS中删除索引10以后的字符串
Ls .Remove (10,Ls.Length -10);
Console .WriteLine (Ls);
//使用Replace方法将“爱好:”替换为“毕生追求:”
Ls.Replace ("爱好:","毕生追求:");
Console .WriteLine (Ls);
Console .ReadLine ();
}
}
}
运行结果:
4,(1)字符串到字符数组的转换
namespace 字符串和字符数组之间的转换
{
class Program
{
static void Main(string[] args)
{
string str = "mytest";
//使用ToCharArray()方法实现字符串到字符数组的转换
char[] chars = str.ToCharArray();
Console.WriteLine("mytest的长度是" + str.Length);
Console.WriteLine("转换成chars字符串数组后长度是:" + chars.Length);
Console.WriteLine("char[2]=" + chars[2]);
}
}
}
运行结果:
(2)字符数组转换成字符串
namespace 字符串与字符数组之前的转换2
{
class Program
{
static void Main(string[] args)
{
char[] tcs = { 't', 'e', 's', 't', ' ', 'm', 'e' };
string tstr = new string(tcs);
Console.WriteLine("tstr= \"" + tstr + "\"\n");
}
}
}
运行结果:
5,StringBuilder类与String类的区别
String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为新对象分配新的空间.
在需要对字符串进行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵.
如果要修改字符串而不创建新的对象,则可以使用StringBuider类.例如当在一个循环中将许多字符串连接在一起时,使用StringBuilder提高性能。