Char
- Char在C#中表示一个Unicode字符,正是这些Unicode字符构成了字符串。Unicode字符是目前计算机通用的字符编码,它为针对不同的语言的每个字符设定了统一的二进制编码,用于满足跨语言,跨平台的文本转换,处理的要求。Char只能定义一个Unicode字符。
Char常用方法:
- 【Is开头的方法大多是判断Unicode字符是否为某个类别】
- 【To开头的方法主要是转换为其他Unicode字符。】
例判断Unicode字符:
char c = '1';
Console.WriteLine(char.IsLett er(c));
Console.ReadKey();
以上代码会显示false,因为根据上图char的常用方法IsLetter是是否是字母的意思
转义字符:
- C#采用字符”\”作为转义字符
char c = '\n';
Console.WriteLine("输入内容\n,哈哈哈");
Console.WriteLine(char.IsSeparator(c));
Console.ReadKey();
显示为:
复制链接到代码中转译字符报错的话就直接在地址前面加@ 就如qq邮箱
String字符串
字符串的关键字为string:
- 它是String类的别名。string类型表示Unicode字符的字符串。String类类似于string类型,但是功能更强。虽然String类功能很强,但是它也是不可改变的。这就是说一旦创建String对象,就不能够修改。表面看来能够修改字符串的所有方法,实际上不能够修改。它们实际上返回一个根据所调用的方法修改的新的String。当需要大量的修改时,可使用StringBuilder类。
比较字符串:
- 比较字符串并非比较字符串长度的大小,而是比较字符串在英文字典中的位置。比较字符串按照字典排序的规则,判断;两个字符串的大小。在英文字典中,前面的单词小于后面的单词。
compareTo:
- 方法用来比较两个字符是否相等,不同的是Compare 方法以实例对象本身与指定的字符串比较
- 0代表位置相等,-1代表前者的位置比后者的位置靠后,1代表前者位置大于后者位置
string str = "A";
string str2 = "B";
Console.WriteLine(str.CompareTo(str2));
Console.ReadKey();
显示结果为 1 因为前者 “A”大于后者"B"
compare:
- 方法用来比较两个字符串是否相等
string str = "A";
string str2 = "B";
Console.WriteLine(string.Compare(str2,str));
Console.ReadKey();
显示结果同上面一样
Equals
- 方法主要用于比较两个字符串是否相等,如果相同返回值为 true,否则为false
格式化字符串,Format方法
-
用于将字符串数据格式化成指定的格式
-
一般针对DateTime.Now进行格式化
以上表格中的F带秒,f不带秒 -
如以下代码要求显示出当前日期格式
string str = string.Format("{0:d}",DateTime.Now);
Console.WriteLine(str);
Console.ReadLine();
代码分析:在{0:d}里面,0代表的是当前的时间,要求把它转成d简短日期格式
显示结果如下图:
截取字符串:
- SubString方法,该方法可以截取字符串中指定位置和指定长度的字符。
- 第一种,只截取第一个
string str = "abcdefg";
Console.WriteLine(str.Substring(1));
Console.ReadKey();
显示结果为
*第二种,从第一位开始截取后三位
string str = "abcdefg";
Console.WriteLine(str.Substring(1,3));
Console.ReadKey();
显示结果为:
文件的出现位置:
- 第一种:当只有一个点时截取cs
string str = "123.cs";
//找到字符第一次出现的位置
int index = str.IndexOf(".");
//通过截取产生新的字符串
string str2 = str.Substring(0, index);
Console.WriteLine(str2);
Console.ReadKey();
显示结果为cs
*第二种:当文件名如果有很多点时截取cs之前的
string str = "...1...2...3.cs";
int index = str.LastIndexOf(".");
string str2 = str.Substring(0, index);
Console.WriteLine(str2);
Console.ReadKey();
显示结果为…1…2…3
插入字符串:
- Insert方法,用于向字符串的任意位置插入新元素
string str = "123";
//(startIndex:插入的开始位置 value插入的值)
string str2=str.Insert(1, "aaaaaa");
Console.WriteLine(str2);
Console.ReadKey();
显示结果为:
填充字符串:
- PadLeft/PadRight 填充字符
string str = "123";
//(totalWidth: 新的字符串的长度 paddingChar:填充的值)
string str2 = str.PadLeft(5, 'A');
Console.WriteLine(str2);
Console.ReadKey();
显示结果如下:
删除字符串:
- Remove方法,用于从一个字符串指定位置开始,删除指定数量的字符。
string str = "123456";
// (startIndex:开始删除元素的下表 count:删除此元素和此元素后的数量)
string str2= str.Remove(3,2);
Console.WriteLine(str2);
Console.ReadKey();
显示结果为:
复制字符串:
- Copy和CopyTo方法,用于将字符串复制到另外一个字符串或char类型的数组中
- CopyTo
string str = "123";
char[] destination = { 'T', 'h', 'e', 'i', 'n', 'i', 't', 'i', 'a', 'l', ' ', 'a', 'r', 'r', 'a', 'y' };
//(sourceIndex:复制第一个字符索引 destination: 将所有字符复制到char数组 ,destinationIndex:在哪里开始复制操作 count:复制多少个)
//索引和计数必须引用该字符串内的位置
Console.WriteLine(destination);
str.CopyTo(0, destination, 4 , str.Length);
Console.WriteLine(destination);
Console.ReadKey();
它不产生任何结果集,只是对当前的数组进行操作
显示结果为:
- Copy
string str = "123";
string str2 = String.Copy(str);
Console.WriteLine(str2);
Console.ReadKey();
产生结果集
显示结果为:
CopyTo与Copy的区别:
- CopyTo是替换掉数组中的值,Copy是全部内容的复制
替换字符串
- Replace方法,用于将字符串中的某个字符或者字符串换成其他的字符或者字符串
string str = "123";
//(oldChar:旧的字符,newChar:新的字符)
string str2=str.Replace('2','5');
Console.WriteLine(str2);
Console.ReadKey();
显示结果为
分割字符串
- Split方法,用于分割字符串。该方法的返回值是包含所有分割子字符串的数组对象,可以通过数组取得所有分割的子字符串
string str = "1,234?568.abvfr";
string[] strs=str.Split(new char[] { ',', '?', '.' });
Console.WriteLine(strs.Length);
Console.ReadKey();
显示结果为
StringBuilder
- StringBuilder可变字符串类,存在于System.Text命名空间中,如果要创建StringBilder对象,首先必须引用此命名空间
- 常用方法
- Append方法
StringBuilder sb = new StringBuilder();
sb.Append("A");
sb.Append("A");
sb.Append("A");
sb.Append("A");
sb.Append("A");
Console.WriteLine(sb);
Console.ReadKey();
起了一种拼接效果
显示结果为
- AppendFormat方法
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0:C}",9999999.99);
Console.WriteLine(sb);
Console.ReadKey();
显示结果为
- Insert方法
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0:C}",9999999.99);
sb.Insert(sb.Length, "插入的值");
Console.WriteLine(sb);
Console.ReadKey();
显示结果为
- Remove方法
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0:C}",123.123);
sb.Insert(sb.Length, "插入的值");
sb.Remove(0,1);
Console.WriteLine(sb);
Console.ReadKey();
显示结果为:
*Replace方法
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0:C}",123.123);
sb.Insert(sb.Length, "插入的值");
sb.Remove(0,1);
sb.Replace("插入的值","改变的值");
Console.WriteLine(sb);
Console.ReadKey();
显示结果为:
StringBuilder与String类的区别
- String对象不可改变的,每次使用Stirng类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销会非常昂贵。如果修改字符串而不创建新的对象,则可以使用StirngBuilder类。